最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實(shí)戰(zhàn)之vue登錄驗(yàn)證的實(shí)現(xiàn)代碼

 更新時(shí)間:2017年10月31日 10:14:05   作者:殺手  
本篇文章主要介紹了Vue實(shí)戰(zhàn)之vue登錄的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

最近一直在擼一個(gè)給大學(xué)生新生用的產(chǎn)品,在擼的時(shí)候有時(shí)候會(huì)發(fā)現(xiàn)自己力不從心,是不是我的能力下降,是不是我該放棄我的最熱愛的事業(yè)了?這對(duì)我的心靈造成了巨大的傷害,所以我決定向蒼老師起誓一定練好我這雙手——好好寫代碼(想多的同學(xué)趕緊去面壁5秒鐘再過(guò)來(lái)往下看)~~~

我做的這個(gè)產(chǎn)品是課堂在線編程教學(xué)工具,由于涉及到商業(yè)問(wèn)題,這里就不能和大家分享了,但是我可以把里面我認(rèn)為很牛(zhuang)X(bi)的技術(shù)和大家分享分享啊。

如果你覺得我寫的很 low的話歡迎加入igeekbar裙里來(lái)噴我啊,我在那里等你啊,我相信贊美會(huì)有很多故事喲。哈哈,廢話不多說(shuō)了,進(jìn)入干貨分享啦~~~

先從登錄分享吧,登錄是我寫完項(xiàng)目后加上的,一開始沒(méi)有考慮到登錄問(wèn)題,后來(lái)加的,看了一些人分享的登錄,感覺都太牛逼了(主要我理解能力差看不懂)。最后自己搞了一套。

使用的技術(shù):

  1. vue
  2. vue-router
  3. vuex

首先明確的一點(diǎn)vue是一個(gè)寫但頁(yè)面的框架,以前在做登錄的時(shí)候,也許是后端來(lái)控制登錄的狀態(tài),把登陸的信息會(huì)放在cookie里。前端也可以做登錄驗(yàn)證的,這主要是基于但頁(yè)面引入路由的功能得以實(shí)現(xiàn)的。

在vue-router里有個(gè)鉤子函數(shù) beforeEach (導(dǎo)航守衛(wèi))多霸氣的名字,故名YY就是這是我家沒(méi)我的邀請(qǐng)名片都給我滾蛋,還想過(guò)來(lái)和我一起看蒼老師。beforeEach 接受三個(gè)參數(shù)(to, from, next)分別是to: 小伙要去哪里, from: 小伙從那里來(lái), next: 美女您請(qǐng)進(jìn),小心路滑啊。姑且你們認(rèn)為我寫的很形象啊,如果你感到不服去看 文檔 ??!

理解里 beforeEach 那我們就可以區(qū)搞事情了。基本的思路是:

  1. 我要從router的信息里面拿到 meta 用戶的源信息,如果沒(méi)有就讓這屌絲滾蛋,收拾帥氣點(diǎn)再來(lái)(也就是去登錄)
  2. 如果沒(méi)有源信息的話,就等跳到 igeekbar 裙里來(lái)瞅瞅,拿到入場(chǎng)圈(也就是登錄后拿到了返回結(jié)果并存在router的源信息中,用于之后路由跳轉(zhuǎn)的驗(yàn)證)

寫到這里突然感覺這貌似誰(shuí)都懂的啊,不管了寫這么多,就當(dāng)你是小白吧(哈哈哈)

下面直接上代碼:

在 router.js 路由中添加一下代碼

// router.js
router.beforeEach((to, from, next) => {
 if (!to.meta.user) {
  // todo 請(qǐng)求接口獲取數(shù)據(jù)
  loadUserData().then(user => {
   // 存放源信息
   to.meta.user = user
   // 存在 vuex 中
   store.state.user = user
   if(user){
    next()
   }else{
    next({
     path: '/'
    })
   }
  })
 } else {
  next()
 }
})

統(tǒng)一處理接口的文件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)
   })
  }
 })
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

德保县| 关岭| 于都县| 惠水县| 平乡县| 邵东县| 祁门县| 长垣县| 绩溪县| 法库县| 新乐市| 铅山县| 南开区| 安义县| 达州市| 霍林郭勒市| 逊克县| 关岭| 新丰县| 柘荣县| 平塘县| 科技| 普安县| 抚远县| 界首市| 澄迈县| 乌鲁木齐市| 威信县| 佛学| 湘乡市| 赫章县| 阜康市| 汉沽区| 陈巴尔虎旗| 新津县| 通化县| 河曲县| 娱乐| 壶关县| 扶余县| 芷江|