您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Vue實戰之vue登錄驗證的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue實戰之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) }) } }) }
以上是“Vue實戰之vue登錄驗證的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。