详解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 19 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
js生成随机数的过程解析
Nov 24 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 17 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
回调函数的意义以及python实现实例
2017/06/20 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python 通过文件夹导入包的操作
2020/06/01 Python
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
高三毕业评语
2014/12/31 职场文书
出租车拒载检讨书
2015/01/28 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS