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 相关文章推荐
动态加载js的几种方法
Oct 23 Javascript
DOM 中的事件处理介绍
Jan 18 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 Javascript
React中上传图片到七牛的示例代码
Oct 10 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 Javascript
vue3.0中使用element的完整步骤
Mar 04 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
PHP 万年历实现代码
2012/10/18 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
python类参数self使用示例
2014/02/17 Python
在django中,关于session的通用设置方法
2019/08/06 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
电子商务专业学生的学习自我评价
2013/10/27 职场文书
美容院店长岗位职责
2014/04/08 职场文书
个人年终总结开头
2015/03/06 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
超强台风观后感
2015/06/09 职场文书
企业愿景口号
2015/12/25 职场文书