详解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 相关文章推荐
广告显示判断
Aug 31 Javascript
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
常见表单重复提交问题整理及解决方法
Nov 13 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
JS跨域请求外部服务器的资源
Feb 06 Javascript
详解webpack+gulp实现自动构建部署
Jun 29 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 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一些公用函数的集合
2008/03/27 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
Python入门篇之函数
2014/10/20 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
学校领导班子群众路线整改措施
2014/09/16 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
技术股份合作协议书
2014/10/05 职场文书
项目转让协议书
2014/10/27 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL
php解析非标准json、非规范json的方式实例
2022/05/10 PHP