详解vue后台系统登录态管理


Posted in Javascript onApril 02, 2019

技术应用
js-cookie + vuex + localStorage 做数据持久化

js-cookie

npm i js-cookie --save

详解vue后台系统登录态管理

vuex

 详解vue后台系统登录态管理

user.js

import { login, logout } from '@/servers/login'
	import { getToken, setToken, removeToken } from '@/utils/auth' // 这是上面的js-cookie暴露出来的方法
	const user = {
  state: {
    userInfo: "",
    token: getToken(),
    roles: []
  },
  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    }
  },
  actions: {
    // 用户名登录
    login({ commit }, userInfo) {
      const userName = userInfo.userName.trim()
      return new Promise((resolve, reject) => {
        login({userName: userName, password: userInfo.password}).then(res 						=> {
          if (res.status.statusCode === 0) {
            const data = res.result
            commit('SET_TOKEN', data.token)
            setToken(data.token)
            localStorage.setItem('userInfo', JSON.stringify(data))
            resolve()
          }
          else {
            resolve(res.status.statusReason)
          }
          
        })
        .catch(error => {
          reject(error)
        })
      })
    },
    // 登出
    logout({ commit }, userId ) {
      return new Promise((resolve, reject) => {
        logout({id: userId}).then((res) => {
          if (res.status.statusCode === 0) {
            commit('SET_TOKEN', '')
            removeToken()
            localStorage.clear()
            resolve()
          }
          else {
            resolve(res.status.statusReason)
          }
        })
        .catch(error => {
          reject(error)
        })
      })
    }
  }
}
export default user

getter.js

const getters = {
  userInfo: state => state.user.userInfo
}

export default getters

store.js

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import getters from './getters'

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    user
  },
  getters
})

export default store

以上就是整个登录态的设定

在项目中的使用,如下
点击登录后

this.$store.dispatch('login', {userName: userName, password: password}).then((res) => {
		console.log(res)
		if(!res) {
			//	登录成功后的逻辑
		} else {
			//	登录失败后的逻辑
		}
	})

点击退出后

this.$store.dispatch('logout', userId).then((res) => {
	   if (!res) {
	    //	退出成功的逻辑
	   }
	   else {
	    //	退出失败的逻辑
	   }
	 })

需要特别注意的一点,vuex在页面刷新之后会消失掉.

以上所述是小编给大家介绍的vue后台系统登录管理详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
Nov 24 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
vue.js实现二级菜单效果
Oct 19 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 Javascript
layui表格设计以及数据初始化详解
Oct 26 Javascript
如何在Vue中抽离接口配置文件
Oct 31 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
微信小程序实现人脸识别登陆的示例代码
Apr 02 #Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 #Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 #Javascript
基于Vue插入视频的2种方法小结
Apr 02 #Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 #Javascript
小程序实现自定义导航栏适配完美版
Apr 02 #Javascript
es6 symbol的实现方法示例
Apr 02 #Javascript
You might like
php学习之 循环结构实现代码
2011/06/09 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
学习php分页代码实例
2013/10/24 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
如何在PHP中读写文件
2020/09/07 PHP
异步动态加载js与css文件的js代码
2013/09/15 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
跟老齐学Python之网站的结构
2014/10/24 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
python 模拟登录B站的示例代码
2020/12/15 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
工厂仓管员岗位职责
2014/01/01 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
网聊搭讪开场白
2015/05/28 职场文书
Oracle使用别名的好处
2022/04/19 Oracle