详解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 相关文章推荐
Javascript中的常见排序算法
Mar 27 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
基于Vue生产环境部署详解
Sep 15 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
node基于async/await对mysql进行封装
Jun 20 Javascript
微信小程序实现人脸识别登陆的示例代码
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用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
超级简单的jquery操作表格方法
2014/12/15 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
js实现导航跟随效果
2018/11/17 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Python检测数据类型的方法总结
2019/05/20 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
浅析python标准库中的glob
2020/03/13 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
怎么写好自荐信
2013/10/30 职场文书
车间调度岗位职责
2013/11/30 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
开展创先争优活动总结
2014/08/28 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
课外活动实习计划
2015/01/19 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
MySQL创建表操作命令分享
2022/03/25 MySQL
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android