Vue实战之vue登录验证的实现代码


Posted in Javascript onOctober 31, 2017

最近一直在撸一个给大学生新生用的产品,在撸的时候有时候会发现自己力不从心,是不是我的能力下降,是不是我该放弃我的最热爱的事业了?这对我的心灵造成了巨大的伤害,所以我决定向苍老师起誓一定练好我这双手——好好写代码(想多的同学赶紧去面壁5秒钟再过来往下看)~~~

我做的这个产品是课堂在线编程教学工具,由于涉及到商业问题,这里就不能和大家分享了,但是我可以把里面我认为很牛(zhuang)X(bi)的技术和大家分享分享啊。

如果你觉得我写的很 low的话欢迎加入igeekbar裙里来喷我啊,我在那里等你啊,我相信赞美会有很多故事哟。哈哈,废话不多说了,进入干货分享啦~~~

先从登录分享吧,登录是我写完项目后加上的,一开始没有考虑到登录问题,后来加的,看了一些人分享的登录,感觉都太牛逼了(主要我理解能力差看不懂)。最后自己搞了一套。

使用的技术:

  1. vue
  2. vue-router
  3. vuex

首先明确的一点vue是一个写但页面的框架,以前在做登录的时候,也许是后端来控制登录的状态,把登陆的信息会放在cookie里。前端也可以做登录验证的,这主要是基于但页面引入路由的功能得以实现的。

在vue-router里有个钩子函数 beforeEach (导航守卫)多霸气的名字,故名YY就是这是我家没我的邀请名片都给我滚蛋,还想过来和我一起看苍老师。beforeEach 接受三个参数(to, from, next)分别是to: 小伙要去哪里, from: 小伙从那里来, next: 美女您请进,小心路滑啊。姑且你们认为我写的很形象啊,如果你感到不服去看 文档 啊!

理解里 beforeEach 那我们就可以区搞事情了。基本的思路是:

  1. 我要从router的信息里面拿到 meta 用户的源信息,如果没有就让这?潘抗龅埃?帐八??阍倮矗ㄒ簿褪侨サ锹迹?/li>
  2. 如果没有源信息的话,就等跳到 igeekbar 裙里来瞅瞅,拿到入场圈(也就是登录后拿到了返回结果并存在router的源信息中,用于之后路由跳转的验证)

写到这里突然感觉这貌似谁都懂的啊,不管了写这么多,就当你是小白吧(哈哈哈)

下面直接上代码:

在 router.js 路由中添加一下代码

// router.js
router.beforeEach((to, from, next) => {
 if (!to.meta.user) {
  // todo 请求接口获取数据
  loadUserData().then(user => {
   // 存放源信息
   to.meta.user = user
   // 存在 vuex 中
   store.state.user = user
   if(user){
    next()
   }else{
    next({
     path: '/'
    })
   }
  })
 } else {
  next()
 }
})

统一处理接口的文件api.js

// api.js
import axios from 'axios'

// 封装ajax 的 fetch
export let fetch = (method, url, data, forceLogin = true) => {
 return new Promise((resolve, reject) => {
  axios({
   ...data,
   method: method,
   url: url
  }).then(response => {
   resolve(response.data)
  }).catch(err => {
   reject(err)
  })
 })
}

// 获取用户信息
export let loadUserData = () => {
 return new Promise((resolve, reject) => {
  let user = null
  let cacheKey = 'authUserJsonStr'
  let authUserJsonStr = sessionStorage.getItem(cacheKey)
  if (authUserJsonStr) {
   user = JSON.parse(sessionStorage.getItem(cacheKey))
   resolve(user)
  } else {
   fetch('GET', '/api/auth_info/', {}, false).then((data) => {
    user = data
    sessionStorage.setItem(cacheKey, JSON.stringify(user))
    resolve(user)
   }).catch(() => {
    resolve(null)
   })
  }
 })
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
Jul 03 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
node.js中的path.dirname方法使用说明
Dec 09 Javascript
javascript定义变量时加var与不加var的区别
Dec 22 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
很棒的一组js图片轮播特效
Jan 12 Javascript
小程序云函数调用API接口的方法
May 17 Javascript
Vue开发环境中修改端口号的实现方法
Aug 15 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 #jQuery
ES6解构赋值的功能与用途实例分析
Oct 31 #Javascript
js原生日历的实例(推荐)
Oct 31 #Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 #Javascript
详解RequireJs官方使用教程
Oct 31 #Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 #Javascript
ES6解构赋值实例详解
Oct 31 #Javascript
You might like
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python与R语言的简要对比
2017/11/14 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python的垃圾回收机制详解
2019/08/28 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
国家助学金获奖感言
2014/01/31 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Python一行代码实现自动发邮件功能
2021/05/30 Python
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript