• 技术文章 >web前端 >js教程

    如何用vue实现登录验证

    php中世界最好的语言php中世界最好的语言2017-12-30 17:59:51原创5860
    最这次给大家带来的是如何用vue实现登录验证,登录是我写完项目后加上的,一开始没有考虑到登录问题,后来加的,看了一些人分享的登录,感觉都太牛逼了,这篇文章就给大家好好分析一下。

    使用的技术:

    vue

    vue-router

    vuex

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

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

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

    我要从router的信息里面拿到 meta 用户的源信息,如果没有就让这屌丝滚蛋,收拾帅气点再来(也就是去登录)

    如果没有源信息的话,就等跳到 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)
       })
      }
     })
    }

    相信看了以上介绍你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    相关阅读:

    JS的冒泡事件如何使用

    在JS中class属性需要如何使用

    原生JS如何实现AJAX、JSONP

    以上就是如何用vue实现登录验证的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:验证 登录 实现
    上一篇:ES6如何使用Set数据结构操作数组 下一篇:ajax怎样才能读取本地的json
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 什么是消息队列?node中如何使用消息队列?• 18个常见angular面试题(附答案分析)• JavaScript的Symbol类型、隐藏属性及全局注册表详解• 浅析IDEA中如何开发Angular• 整理总结JavaScript常见的BOM操作
    1/1

    PHP中文网