详解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获取变量
Aug 24 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
vuejs父子组件通信的问题
Jan 11 Javascript
基于webpack 实用配置方法总结
Sep 28 Javascript
javascript 缓冲运动框架的实现
Sep 29 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
详解Python是如何实现issubclass的
2019/07/24 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
关于期中考试的反思
2014/02/02 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
环卫处个人工作总结
2015/03/04 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript