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 Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
javascript日期格式化示例分享
Mar 05 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
JavaScript设计模式之工厂方法模式介绍
Dec 28 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
关于express与koa的使用对比详解
Jan 25 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
详解JavaScript原型与原型链
Nov 16 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
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python语法快速入门指南
2015/10/12 Python
python实现红包裂变算法
2016/02/16 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Python猴子补丁知识点总结
2020/01/05 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
大学生求职信怎么写
2015/03/19 职场文书
运动会观后感
2015/06/09 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
python如何进行基准测试
2021/04/26 Python