Vue實(shí)戰(zhàn)之vue登錄驗(yàn)證的實(shí)現(xiàn)代碼
最近一直在擼一個(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ù):
- vue
- vue-router
- 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ū)搞事情了。基本的思路是:
- 我要從router的信息里面拿到 meta 用戶的源信息,如果沒(méi)有就讓這屌絲滾蛋,收拾帥氣點(diǎn)再來(lái)(也就是去登錄)
- 如果沒(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í)有所幫助,也希望大家多多支持腳本之家。
- Vue 實(shí)現(xiàn)登錄界面驗(yàn)證碼功能
- vue實(shí)現(xiàn)登錄頁(yè)面的驗(yàn)證碼以及驗(yàn)證過(guò)程解析(面向新手)
- vue 登錄滑動(dòng)驗(yàn)證實(shí)現(xiàn)代碼
- 使用vue-route 的 beforeEach 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗(yàn)證登錄)功能
- Vue中的驗(yàn)證登錄狀態(tài)的實(shí)現(xiàn)方法
- vue登錄注冊(cè)及token驗(yàn)證實(shí)現(xiàn)代碼
- vue router+vuex實(shí)現(xiàn)首頁(yè)登錄驗(yàn)證判斷邏輯
- Vue中登錄驗(yàn)證成功后保存token,并每次請(qǐng)求攜帶并驗(yàn)證token操作
- vuex + axios 做登錄驗(yàn)證 并且保存登錄狀態(tài)的實(shí)例
- vue實(shí)現(xiàn)登錄時(shí)滑塊驗(yàn)證
相關(guān)文章
vue3組件化開發(fā)之可復(fù)用性的應(yīng)用實(shí)例詳解
不斷把公共的、可以獨(dú)立拆分出來(lái)的抽出來(lái)作為一個(gè)獨(dú)立可復(fù)用的組件來(lái)向上提供調(diào)用,這樣讓我們的代碼更加方便組織和管理,并且擴(kuò)展性也更強(qiáng),下面這篇文章主要給大家介紹了關(guān)于vue3組件化開發(fā)之可復(fù)用性應(yīng)用的相關(guān)資料,需要的朋友可以參考下2022-06-06
vue路由跳轉(zhuǎn)打開新窗口(window.open())和關(guān)閉窗口(window.close())
這篇文章主要介紹了vue路由跳轉(zhuǎn)打開新窗口(window.open())和關(guān)閉窗口(window.close())問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue最強(qiáng)table vxe-table 虛擬滾動(dòng)列表 前端導(dǎo)出問(wèn)題分析
最近遇到個(gè)問(wèn)題,后臺(tái)一次性返回2萬(wàn)條列表數(shù)據(jù)并且需求要求所有數(shù)據(jù)必須全部展示,不能做假分頁(yè),怎么操作呢,下面通過(guò)本文介紹下vue最強(qiáng)table vxe-table 虛擬滾動(dòng)列表 前端導(dǎo)出問(wèn)題,感興趣的朋友一起看看吧2023-10-10
element?ui富文本編輯器的使用效果與步驟(quill-editor)
富文本編輯器在任何項(xiàng)目中都會(huì)用到,在Element中我們推薦vue-quill-editor組件,下面這篇文章主要給大家介紹了關(guān)于element?ui富文本編輯器的使用效果與步驟(quill-editor)的相關(guān)資料,需要的朋友可以參考下2022-10-10
Vue Cli與BootStrap結(jié)合實(shí)現(xiàn)表格分頁(yè)功能
這篇文章主要介紹了Vue Cli與BootStrap結(jié)合實(shí)現(xiàn)表格分頁(yè)功能,需要的朋友可以參考下2017-08-08
微信小程序如何像vue一樣在動(dòng)態(tài)綁定類名
這篇文章主要介紹了微信小程序如何像vue一樣在動(dòng)態(tài)綁定類名,文中給大家提到了vue與微信小程序的區(qū)別,需要的朋友可以參考下2018-04-04
vue 實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能詳解
這篇文章主要介紹了通過(guò)vue實(shí)現(xiàn)網(wǎng)頁(yè)截圖的功能,有興趣的童鞋可以了解一下2021-11-11

