详解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 相关文章推荐
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
一个js拖拽的效果类和dom-drag.js浅析
Jul 17 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
鼠标选择动态改变网页背景颜色的JS代码
Dec 10 Javascript
JavaScript函数详解
Feb 27 Javascript
javascript实现详细时间提醒信息效果的方法
Mar 11 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
跟我学习JScript的Bug与内存管理
Nov 18 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
jQuery Dom元素操作技巧
Feb 04 jQuery
Vue.js组件通信之自定义事件详解
Oct 19 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实现图片简单上传
2006/10/09 PHP
Cannot modify header information错误解决方法
2008/10/08 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
深入理解Django的中间件middleware
2018/03/14 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python中文编码知识点
2019/02/18 Python
python爬取内容存入Excel实例
2019/02/20 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
优秀毕业生自荐信范文
2014/01/01 职场文书
酒店营销策划方案
2014/02/07 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
MySQL基础(一)
2021/04/05 MySQL
如何自己动手写SQL执行引擎
2021/06/02 MySQL