vue使用localStorage保存登录信息 适用于移动端、PC端


Posted in Javascript onMay 27, 2019

众所周知,vue可以用来开发移动端app,可以使用hbuilder将build好的vue打包成一个移动端app,但是用过之后就会发现,使用cookies或者session保存登录的token,在手机端无法保存,每次打开app依然提示登录。那么我们可以使用localStorage来保存登录信息就可以了,具体代码如下

1、vuex stroe代码

index.js

import Vue from 'vue'
import vuex from 'vuex'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken, setlocalStorage, getlocalStorage, removelocalStorage } from '@/utils/user'

Vue.use(vuex);

//state为访问状态对象 数字常量等
const state = {
 x:5,
 token: getlocalStorage(),
 nickname: '',
 course_id: 0,
 user_id: 0,
 group_id: 0,
 begin_group_num: 0,
 student_group: 0
};
//访问触发状态mutation是同步的
//actions是异步的
const mutations = {
 SET_TOKEN: (state, token) => {
 state.token = token
 },
 SET_NAME: (state, nickname) => {
 state.nickname = nickname
 },
};
const actions = {
 Login({ commit }, userInfo) {
 const username = userInfo.username.trim()
 return new Promise((resolve, reject) => {
 login(username, userInfo.password).then(response => {
 const data = response.data
 setlocalStorage(data.token)
 commit('SET_TOKEN', data.token)
 resolve()
 }).catch(error => {
 console.log()
 reject(error)
 })
 })
 },
 GetInfo({ commit }) {
 return new Promise((resolve, reject) => {
 getInfo().then(response => {
 const data = response.data
 console.log(data)
 commit('SET_NAME', data.nickname)
 resolve()
 }).catch(error => {
 console.log()
 })
 })
 },
 // 前端 登出
 FedLogOut({ commit }) {
 return new Promise(resolve => {
 commit('SET_TOKEN', '')
 removelocalStorage()
 resolve()
 })
 }
};

//getters 类似于生命周期里面的钩子,getters是在页面刚刚加载完毕之后马上加载,类似于生命周期里面的created
const getters = {
 // 测试getters
 x: state => state.x + 200,
};
export default new vuex.Store({
 state,
 mutations,
 getters,
 actions
})

2、localStorage 代码

user.js

import Cookies from 'js-cookie'

const TokenKey = 'MuseUi-Token'

export function getToken() {
 return Cookies.get(TokenKey)
}

export function setToken(token) {
 return Cookies.set(TokenKey, token)
}

export function removeToken() {
 return Cookies.remove(TokenKey)
}

const SessionKey = 'usertoken'
export function setlocalStorage(token) {
 return localStorage.setItem(SessionKey,token)
}

export function getlocalStorage() {
 return localStorage.getItem(SessionKey)
}

export function removelocalStorage() {
 return localStorage.setItem(SessionKey,null)
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
写出更好的JavaScript程序之undefined篇(中)
Nov 23 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
Aug 17 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
解决layer 动态加载select 失效的问题
Sep 18 Javascript
详解js中的几种常用设计模式
Jul 16 Javascript
原生js实现自定义滚动条
Jan 20 Javascript
Vue使用localStorage存储数据的方法
May 27 #Javascript
了解javascript中的Dom操作
May 27 #Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 #Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 #Javascript
深入浅出了解Node.js Streams
May 27 #Javascript
JavaScript怎样在删除前添加确认弹出框?
May 27 #Javascript
vue项目前端错误收集之sentry教程详解
May 27 #Javascript
You might like
php类
2006/11/27 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python如何保存文本文件
2020/06/07 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
Python self用法详解
2020/11/28 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
会计专业个人求职信范文
2014/01/08 职场文书
秘书英文求职信范文
2014/01/31 职场文书
《锄禾》教学反思
2014/04/08 职场文书
先进集体申报材料
2014/12/25 职场文书
英文感谢信范文
2015/01/21 职场文书
婚宴新娘致辞
2015/07/28 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS