現(xiàn)今的網(wǎng)站和應(yīng)用程序一般都需要用戶的個(gè)人信息才能進(jìn)行操作,因此登錄已經(jīng)成為了大多數(shù)應(yīng)用程序中必不可少的一步,Vue框架的出現(xiàn)也使得前端開發(fā)人員的工作更加得心應(yīng)手。Vue通過(guò)其強(qiáng)大的數(shù)據(jù)綁定和組件化實(shí)現(xiàn)了頁(yè)面中數(shù)據(jù)與狀態(tài)的管理,同時(shí)也方便了我們進(jìn)行登錄檢查的實(shí)現(xiàn)。
Vue框架的登錄檢查可以分為兩大部分:前端檢查和后臺(tái)檢查。前端檢查主要是通過(guò)判斷用戶是否已經(jīng)登錄來(lái)做出相應(yīng)的操作,而后臺(tái)檢查則需要向服務(wù)器發(fā)送請(qǐng)求,確認(rèn)用戶是否合法。
前端檢查的實(shí)現(xiàn)大多依賴于Vue的路由功能,雖然在Vue2.0中移除了Vue-Router自帶的路由守衛(wèi),但是可以通過(guò)創(chuàng)建全局前置守衛(wèi)的方式來(lái)實(shí)現(xiàn)路由的檢查。具體的實(shí)現(xiàn)思路如下:
import router from './router' router.beforeEach((to, from, next) =>{ const isLogin = localStorage.eleToken ? true : false; if (to.path == "/login") { next(); } else { isLogin ? next() : next("/login"); } })
該代碼中,我們先導(dǎo)入Vue-Router,并創(chuàng)建了一個(gè)全局前置守衛(wèi)。在進(jìn)入每個(gè)路由之前,我們先判斷用戶是否已經(jīng)登錄。如果用戶已經(jīng)登錄,那么我們可以繼續(xù)向下執(zhí)行操作;如果用戶未登錄,則直接跳轉(zhuǎn)到登錄頁(yè)。這樣可以避免未經(jīng)授權(quán)的用戶訪問(wèn)需要登錄才能訪問(wèn)的頁(yè)面,確保了網(wǎng)站的安全性。
后臺(tái)檢查的實(shí)現(xiàn)需要與后端開發(fā)人員密切配合。前端向后端發(fā)送登錄請(qǐng)求,后端通過(guò)驗(yàn)證請(qǐng)求中傳過(guò)來(lái)的用戶名和密碼,如果驗(yàn)證通過(guò),后端會(huì)返回一個(gè)token,以后的每個(gè)請(qǐng)求都需要在header中帶上該token,這樣后端就可以通過(guò)驗(yàn)證header中的token來(lái)保證每個(gè)請(qǐng)求的合法性了。
login() { this.$axios.post("/api/login", { username: this.form.username, password: this.form.password }).then(res =>{ // 登錄成功 if (res.status === 200) { const token = res.data.token; localStorage.setItem("eleToken", token); this.$router.push("/"); } }) }
該代碼實(shí)現(xiàn)了用戶的登錄和token的存儲(chǔ),login()方法中通過(guò)調(diào)用Axios實(shí)現(xiàn)向服務(wù)器發(fā)送登錄請(qǐng)求,服務(wù)器驗(yàn)證通過(guò)后會(huì)返回token值,成功后將其存儲(chǔ)在localStorage中,以便于后續(xù)使用。
在許多實(shí)際項(xiàng)目中,Vue的登錄驗(yàn)證還需要進(jìn)行一些細(xì)節(jié)處理。例如,當(dāng)用戶在某個(gè)頁(yè)面保持登錄狀態(tài),并在一段時(shí)間后返回此頁(yè)面時(shí),用戶仍然需要保持登錄狀態(tài)。因此,需要在先前的token過(guò)期時(shí)重新獲取token,以保持登錄狀態(tài)。
因此,Vue的登錄驗(yàn)證在實(shí)際開發(fā)中具有很高的實(shí)用價(jià)值,越來(lái)越受到前端開發(fā)的青睞。同時(shí),隨著移動(dòng)端和桌面應(yīng)用的發(fā)展,Vue作為一種輕量級(jí)的前端框架,在企業(yè)應(yīng)用中也被廣泛應(yīng)用。