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 相关文章推荐
HTML代码中标签的全部属性 中文注释说明
Mar 26 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
实现局部遮罩与关闭原理及代码
Feb 04 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
jQuery实现下拉框功能实例代码
May 06 Javascript
解析js如何获取css样式
Dec 11 Javascript
self.attachevent is not a function的解决方法
Apr 04 Javascript
JS简单获取日期相差天数的方法
Apr 24 Javascript
vue 注册组件的使用详解
May 05 Javascript
Vue 组件参数校验与非props特性的方法
Feb 12 Javascript
vue更改数组中的值实例代码详解
Feb 07 Javascript
原生JS实现飞机大战小游戏
Jun 09 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
Mac地址验证的javascript代码
2013/11/09 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python开发游戏的前期准备
2019/05/05 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python的Lambda函数用法详解
2019/09/03 Python
Python如何使用函数做字典的值
2019/11/30 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
如何使用Python调整图像大小
2020/09/26 Python
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
大二学习计划书范文
2014/04/27 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
辞职信怎么写
2015/02/27 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
爱国主义电影观后感
2015/06/18 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB