vue實(shí)現(xiàn)登陸登出的實(shí)現(xiàn)示例
最近接手的B端項(xiàng)目選擇了vue來(lái)做,此項(xiàng)目使用element ui Message等為組件 望周知
需求
- 登陸成功后跳轉(zhuǎn)至首頁(yè)
- 首頁(yè)不能手動(dòng)跳轉(zhuǎn)至登陸頁(yè)
- 登陸后跳轉(zhuǎn)至目標(biāo)頁(yè)面
此次B端SPA項(xiàng)目把a(bǔ)k存在localstorage中
1.登陸的跳轉(zhuǎn)利用全局鉤子router.beforeEach
//router.js router.beforeEach((to, from, next) => { // 若userkey不存在并且前往頁(yè)面不是登陸頁(yè)面,進(jìn)入登陸 // 若userkey存在并且前往登陸頁(yè)面,進(jìn)入主頁(yè) const userKey = localStorage.getItem('userKey') if (!userKey && to.path !== '/login') { next({ path: '/login', query: { redirect: to.fullPath } }) } else if (userKey && to.path === '/login') { next({ path: '/' }) } else { next() } })
上面使用了query帶上目標(biāo)參數(shù)
例子:#/login?redirect=%2Fapp
在登陸提交處還得對(duì)redirect參數(shù)進(jìn)行處理
//若驗(yàn)證成功跳轉(zhuǎn) var redirect = decodeURIComponent(this.$route.query.redirect || '/') self.$router.push({ // 你需要接受路由的參數(shù)再跳轉(zhuǎn) path: redirect })
需求
若ak失效后發(fā)送請(qǐng)求時(shí)彈出失效彈出框返回到登陸頁(yè)面
以下做了個(gè)簡(jiǎn)單的例子若請(qǐng)求返回的參數(shù)帶0則登陸失效
// respone攔截器 axios.interceptors.response.use( response => { console.log(response) const data = response.data if (data.status === 0) { MessageBox.alert('你已被登出,可以取消繼續(xù)留在該頁(yè)面,或者重新登錄', '確定登出', { confirmButtonText: '確定', type: 'warning' }).then(() => { localStorage.clear() router.replace({ path: '/login' }) return }).catch(() => { localStorage.clear() router.replace({ path: '/login' }) }) } else { return response } }, error => { if (error && error.response) { switch (error.response.status) { case 400: error.message = '請(qǐng)求錯(cuò)誤' break case 401: error.message = '未授權(quán),請(qǐng)登錄' break case 403: error.message = '拒絕訪問(wèn)' break case 404: error.message = (process.env.NODE_ENV === 'production' ? `請(qǐng)求地址出錯(cuò)` : `請(qǐng)求地址出錯(cuò): ${error.response.config.url}`) break case 408: error.message = '請(qǐng)求超時(shí)' break case 500: error.message = '服務(wù)器內(nèi)部錯(cuò)誤' break case 501: error.message = '服務(wù)未實(shí)現(xiàn)' break case 502: error.message = '網(wǎng)關(guān)錯(cuò)誤' break case 503: error.message = '服務(wù)不可用' break case 504: error.message = '網(wǎng)關(guān)超時(shí)' break case 505: error.message = 'HTTP版本不受支持' break default: } Message({ message: error.message, type: 'error', duration: 5 * 1000 }) } return Promise.reject(error) } )
需求
手動(dòng)登出
loginOut() { var self = this this.$confirm('您確定要退出嗎?', '退出管理平臺(tái)', { confirmButtonText: '確定', cancelButtonText: '取消' }).then(() => { const info = { 'userkey': localStorage.getItem('userKey') } self.$store.dispatch('LogOut', info).then(() => { self.$router.push({ path: '/login' }) }).catch(() => { }) }).catch(() => { }) }
簡(jiǎn)單的登陸登出結(jié)束啦~
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue2.0 axios前后端登陸攔截器(實(shí)例講解)
- vue+axios新手實(shí)踐實(shí)現(xiàn)登陸的示例代碼
- 詳解用vue.js和laravel實(shí)現(xiàn)微信授權(quán)登陸
- 基于vue-cli3和element實(shí)現(xiàn)登陸頁(yè)面
- Vue 前端實(shí)現(xiàn)登陸攔截及axios 攔截器的使用
- 詳解vue2.0+axios+mock+axios-mock+adapter實(shí)現(xiàn)登陸
- 詳解springboot和vue前后端分離開(kāi)發(fā)跨域登陸問(wèn)題
- Vue 頁(yè)面權(quán)限控制和登陸驗(yàn)證功能的實(shí)例代碼
- vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例
- vue實(shí)現(xiàn)登陸功能
相關(guān)文章
vue控制多行文字展開(kāi)收起的實(shí)現(xiàn)示例
這篇文章主要介紹了vue控制多行文字展開(kāi)收起的實(shí)現(xiàn)示例(也叫控制文字展開(kāi)隱藏),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10深入學(xué)習(xí)Vue nextTick的用法及原理
這篇文章主要介紹了深入學(xué)習(xí)Vue nextTick的用法及原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10vue?parseHTML函數(shù)源碼解析start鉤子函數(shù)
這篇文章主要為大家介紹了vue?parseHTML函數(shù)源碼解析start鉤子函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vue實(shí)現(xiàn)多級(jí)側(cè)邊欄的封裝
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)多級(jí)側(cè)邊欄的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07vue中axios的post請(qǐng)求,415錯(cuò)誤的問(wèn)題
這篇文章主要介紹了vue中axios的post請(qǐng)求,415錯(cuò)誤的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Vue.js如何利用v-for循環(huán)生成動(dòng)態(tài)標(biāo)簽
這篇文章主要給大家介紹了關(guān)于Vue.js如何利用v-for循環(huán)生成動(dòng)態(tài)標(biāo)簽的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01elementUI?el-table二次封裝的詳細(xì)實(shí)例
在項(xiàng)目中會(huì)多次使用表格展示數(shù)據(jù),不對(duì)這個(gè)table進(jìn)行二次封裝成我們自己想要的,重復(fù)的代碼量的工作會(huì)比較大,下面這篇文章主要給大家介紹了關(guān)于elementUI?el-table二次封裝的相關(guān)資料,需要的朋友可以參考下2023-03-03