vuex + axios 做登录验证 并且保存登录状态的实例


Posted in Javascript onSeptember 16, 2018

还是那句话,网上找个完整的博客真的难,实现效果全靠摸索啊

第一步:安装axios 、vuex npm i -s axios npm i -s vuex 执行这两句 ,vue等环境搭建就不废话了

第二步:配置main.js文件

vuex + axios 做登录验证 并且保存登录状态的实例

上图不上码,菊花万人捅,附上代码

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import iView from 'iview';
import 'iview/dist/styles/iview.css';
import locale from 'iview/dist/locale/en-US';
import VueParticles from 'vue-particles';
import axios from 'axios' ;
import Vuex from 'vuex' //引入状态管理
 
Vue.use(VueParticles) ;
Vue.use(iView, { locale });
Vue.config.productionTip = false ;
Vue.prototype.$http = axios ;
Vue.use(Vuex) ;
 
 
const ADD_COUNT = 'ADD_COUNT'; // 用常量代替事件类型,使得代码更清晰
const REMOVE_COUNT = 'REMOVE_COUNT';
//注册状态管理全局参数
var store = new Vuex.Store({
 state:{
 token:'',
 userID:'',
 },
 mutations: {
 //写法与getters相类似
 //组件想要对于vuex 中的数据进行的处理
 //组件中采用this.$store.commit('方法名') 的方式调用,实现充分解耦
 //内部操作必须在此刻完成(同步)
 [ADD_COUNT] (state, token) { // 第一个参数为 state 用于变更状态 登录
  sessionStorage.setItem("token", token);
  state.token = token;
 },
 [REMOVE_COUNT] (state, token) { // 退出登录
 
  sessionStorage.removeItem("token", token);
 
  state.token = token;
 },
 }
});
 
 
router.beforeEach((to, from, next) => {
 iView.LoadingBar.start();//loadong 效果
 
 store.state.token = sessionStorage.getItem('token');//获取本地存储的token
 
 if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
 if (store.state.token !== "") { // 通过vuex state获取当前的token是否存
  next();
 }
 else {
  next({
  path: '/login',
  query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由
  })
 }
 }
 else {
 next();
 }
})
 
router.afterEach(route => {
 iView.LoadingBar.finish();
});
 
 
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store, //注册组件
 components: { App },
 template: '<App/>'
}) ;

第三步:进行登录 操作,调用main.js 中定义好的修改token的方法[ADD_COUNT]

vuex + axios 做登录验证 并且保存登录状态的实例

附上请求部分代码

this.$http({
 method: 'get',
 url: '/api/login',
}).then(function(res){
 var json = res.data
 console.log(json.data);
 this.$Message.success('Success!');
 
 this.$store.commit('ADD_COUNT', json.data.token);
 
 let clock = window.setInterval(() => {
 this.totalTime-- ;
 if (this.totalTime < 0) {
  window.clearInterval(clock) ;
  this.$Loading.finish();
  this.$router.push('/') ;
 }
 },1000)
}.bind(this)).catch(function(err){
 this.$Message.error('登录失败,错误:'+ err);
 this.$Loading.error();
}.bind(this))

差点忘记了一点,在router中要配置需要验证是否登录的请求

vuex + axios 做登录验证 并且保存登录状态的实例

附上router/index.js 代码

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login/Login'
import P404 from '@/components/404/404'
import Main from '@/components/Main'
 
Vue.use(Router)
 
export default new Router({
 mode: 'history',
 routes: [
 {
  path: '/login',//登录页
  name: 'Login',
  component: Login
 },
 {
  path: '/',//首页
  name: 'Main',
  component: Main,
  meta: {
  requireAuth: true, // 添加该字段,表示进入这个路由是需要登录的
  },
 },
 { path: '*', component: P404 } //这里是保证错误地址会跳转到404界面进行提示
 ]
})

这些方法的编写顺序可能没有体现出来,不过最终效果就是这个了,如果有疑问欢迎留言。

以上这篇vuex + axios 做登录验证 并且保存登录状态的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript开发包大全整理
Dec 22 Javascript
JavaScript 高级语法介绍
Jun 15 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
js计时事件实现圆形时钟
Mar 25 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 #Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 #Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
Sep 16 #Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 #Javascript
vue debug 二种方法
Sep 16 #Javascript
Vue刷新修改页面中数据的方法
Sep 16 #Javascript
Vue中使用vux配置代码详解
Sep 16 #Javascript
You might like
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
留言板翻页的实现详解
2006/10/09 PHP
怎样在UNIX系统下安装php3
2006/10/09 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
美国眼镜网站:LensCrafters
2020/01/19 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
外贸公司实习自我鉴定
2013/09/24 职场文书
夜不归宿检讨书
2014/02/25 职场文书
英语专业求职信
2014/07/08 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
学校就业保障协议书
2019/06/24 职场文书
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle