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 相关文章推荐
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
探讨JavaScript中的Rest参数和参数默认值
Jul 29 Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
vue路由拦截及页面跳转的设置方法
May 24 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
解析vue、angular深度作用选择器
Sep 11 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
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
简单介绍python封装的基本知识
2019/08/10 Python
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
Linux机考试题
2015/07/17 面试题
如何进行Linux分区优化
2016/09/13 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
大学四年个人自我小结
2014/03/05 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
甘南现象心得体会
2014/09/11 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年文秘工作总结
2014/11/25 职场文书
总经理司机岗位职责
2015/04/10 职场文书
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers