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更改class和id的方法
Oct 10 Javascript
javascript写的一个链表实现代码
Oct 25 Javascript
JavaScript CSS 修改学习第四章 透明度设置
Feb 19 Javascript
代码触发js事件(click、change)示例应用
Dec 13 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
Jan 28 Javascript
jQuery实现购物车数字加减效果
Mar 14 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
Mar 28 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
详解微信小程序网络请求接口封装实例
May 02 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
JavaScript修改注册表实例代码
Jan 05 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue总线机制(bus)知识点详解
2020/05/10 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
Python实现的矩阵类实例
2017/08/22 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
秋季校运动会广播稿
2014/02/23 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
购房意向书
2014/08/30 职场文书
先进工作者推荐材料
2014/12/23 职场文书
护理实习生带教计划
2015/01/16 职场文书
个人原因辞职信模板
2015/05/13 职场文书
毕业论文致谢词
2015/05/14 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
Oracle 多表查询基本语法实例
2022/04/18 Oracle
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers