vuex實現登陸與未登入不同權限
這次帶給大家vuex實現登陸與未登入不同權限,vuex實現登陸與未登入不同權限的注意事項有哪些,以下就是實戰案例,一起來看一下。
基礎想法就是使用vuex狀態管理來儲存登入狀態(其實就是存一個值,例如token),然後在路由跳轉前進行登入狀態的判斷,可以使用vue-router的全域前置守衛beforeEach,也可以使用路由獨享的守衛beforeEnter。
導航守衛
如其名,vue-router" 提供的導航守衛主要用來透過跳轉或取消的方式守衛導航。有多種機會植入路由導航過程中:全局的, 單一路由獨享的, 或組件級的。 記住參數或查詢的改變並不會觸發進入/離開的導航守衛。你可以透過觀察 $route 物件來應對這些變化,或使用beforeRouteUpdate的元件內守衛。
完整的導航解析流程
# 1、導航被觸發。
2、在失活的元件裡呼叫離開守衛。
3、呼叫全域的 beforeEach 守衛。
4.在重複使用的元件裡呼叫 beforeRouteUpdate 守衛 (2.2 )。
5、在路由配置裡呼叫 beforeEnter。
6、解析異步路由組件。
7.在被啟動的元件裡呼叫 beforeRouteEnter。
8.呼叫全域的 beforeResolve 守衛 (2.5 )。
9.導航被確認。
10、調用全域的 afterEach 鉤子。
11、觸發 DOM 更新。
12.用創建好的實例呼叫 beforeRouteEnter 守衛中傳給 next 的回呼函數。
全域守衛
你可以使用 router.beforeEach註冊一個全域前守衛
const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => { // ... })
當一個導航觸發時,全域前置守衛會按照建立順序呼叫。守衛是非同步解析執行,此時導航在所有守衛 resolve 完成之前一直處於 等待中。
每個守衛方法接收三個參數:
to: Route:即將要進入的目標 路由物件
from: Route:目前導航正要離開的路由
# next: Function:一定要呼叫該方法來 resolve 這個鉤子。執行效果依賴 next 方法的呼叫參數。
next():進行管道中的下一個鉤子。如果全部鉤子執行完了,則導航的狀態就是 confirmed (確認的)。
next(false):中斷目前的導航。如果瀏覽器的 URL 改變了(可能是使用者手動或瀏覽器後退按鈕),那麼 URL 位址會重設到 from 路由對應的位址。
next('/')或next({ path: '/' }): 跳到一個不同的位址。目前的導航被中斷,然後進行一個新的導航。
next(error):(2.4.0 ) 如果傳入 next 的參數是一個 Error 實例,則導航會被終止且該錯誤會傳遞給 router.onError()註冊過的回呼。
確保要呼叫 next 方法,否則鉤子就不會被 resolved。
# 路由獨享的守衛
# 你可以在路由配置上直接定義beforeEnter守衛:
const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, beforeEnter: (to, from, next) => { // ... } } ] })
還有其他部分守衛,詳情可以看官方文件https://router.vuejs.org/zh-cn/advanced/navigation-guards.html
安裝vuex後
# 建立store.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); const state = { isLogin: 0 } const mutations = { changeLogin(state,status){ state.isLogin = status; } } const actions = { loginAction({commit}){ commit('changeLogin',1); } } export default new Vuex.Store({ state, actions, mutations })
login.vue中
引入import { mapActions,mapState } from 'vuex'
# 接著進行登入狀態的改變,base_url就是路徑
export default { name: 'Login', data(){ return{ loginForm: { username: '', password: '', }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' } ], }, showLogin: false } }, mounted(){ this.showLogin = true; }, computed: { ...mapState(['isLogin']) }, methods: { ...mapActions(['loginAction']), submitForm(formName){ this.$refs[formName].validate((valid) => { if(valid){ if(this.loginForm.username == 'aaa' && this.loginForm.password == '111'){ console.log('验证通过'); this.loginAction(); this.$router.push('manage'); }else{ console.log('账号密码出错'); // this.$message.error('账号密码出错'); this.$message({ type: 'error', message: '账号密码出错' }); } console.log('请求地址: ' + base_url); }else{ console.log('验证失败'); return false; } }) } } }
接下去只要使用路由守衛即可
# beforeEach使用實例
router.beforeEach((to,from,next)=>{ if(to.meta.check){ var check = async function(){ const result = await checkUser(); if(result.status == 0){ next(); }else{ alert('用户未登录'); next({path: '/login'}); } } check(); //后台验证session }else{ next(); } })
beforeEnter使用實例
#export default new Router({ routes: [ { path: '/login', component: Login }, { path: '/manage', name: '', component: Manage, beforeEnter: (to,from,next)=> { //导航守卫 console.log(to) console.log(from) if(store.state.isLogin == 1){ console.log('用户已经登录'); next(); }else{ console.log('用户未登录'); next({path: '/login',query:{ Rurl: to.fullPath}}); //未登录则跳转到登陆界面,query:{ Rurl: to.fullPath}表示把当前路由信息传递过去方便登录后跳转回来 } } } ] })
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是vuex實現登陸與未登入不同權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著社群媒體的快速發展,小紅書成為許多年輕人分享生活、探索新產品的熱門平台。在使用過程中,有時使用者可能會遇到登入先前帳號的困難。本文將詳細探討如何解決小紅書登入舊帳號的問題,以及如何應對更換綁定後可能遺失原帳號的情況。一、小紅書怎麼登入以前的帳號? 1.找回密碼登入如果長時間未登入小紅書,可能導致帳號被系統回收。為了恢復存取權限,你可以嘗試透過找回密碼的方式重新登入帳號。操作步驟如下:(1)開啟小紅書App或官網,點選「登入」按鈕。 (2)選擇「找回密碼」。 (3)輸入你註冊帳號時所使用的手機號碼

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

山野間萬鬼嘶鳴,隱沒兵刃交接之聲,越嶺奔赴而來的鬼將,心中戰意洶湧,以炎火為號,率百鬼衝鋒迎戰。 【熾焱百煉•茨木童子典藏皮膚上線】鬼角熾焰怒燃,鎏金眼眸迸發桀駿戰意,白玉甲片裝飾戰袍,彰顯大妖不羈狂放的氣勢。雪白飄揚的袖擺上,赤焰攀附交織,金紋烙印其中,燃點一片緋艷妖異色彩。妖力凝聚而成的鬼火咆哮而至,烈焰令群巒為之震動,煉獄間歸來的妖鬼啊,一同懲戒進犯之人吧。 【專屬動態頭像框•熾焱百煉】【專屬插畫•焰火將魂】【傳記鑑賞】【獲取方式】茨木童子典藏皮膚·熾焱百煉將於12月28日維護後上架皮膚商店,

Discuz後台登入問題解決方法大揭秘,需要具體程式碼範例隨著網路的快速發展,網站建置變得越來越普遍,而Discuz作為一款常用的論壇建站系統,受到了許多站長的青睞。然而,正是因為其功能強大,有時候我們在使用Discuz的過程中會遇到一些問題,例如後台登入問題。今天,我們就來大揭秘Discuz後台登入問題的解決方法,並且提供具體的程式碼範例,希望能幫助到有需要

近日有一些小夥伴諮詢小編快手電腦版怎麼登入?下面就為大家帶來了快手電腦版的登入方法,有需要的小夥伴可以來了解了解哦。第一步:先在電腦的瀏覽器上百度搜尋快手官網。第二步:在搜尋結果清單裡面選取第一條。第三步:進入快手官網主頁面後,點選影片的選項。第四步:點選右上角的使用者頭像。步驟五:在彈出的登入選單裡面點選二維碼登入。步驟六:之後打開手機上的快手,點選左上角的圖示。第七步:點選二維碼標誌。第八步:在我的二維碼介面點擊右上角的掃描圖示之後,掃描電腦上的二維碼即可。第九步:最後電腦版的快手就登入成

GitHubCopilot是編碼人員的下一個級別,它基於AI的模型可以成功預測和自動完成您的程式碼。但是,您可能想知道如何在您的裝置上加入這個AI天才,以便您的編碼變得更加容易!但是,使用GitHub並不是很容易,初始設定過程是一個棘手的過程。因此,我們創建了這個逐步教程,介紹如何在Windows11、10上的VSCode中安裝和實作GitHubCopilot。如何在Windows上安裝GitHubCopilot此過程有幾個步驟。因此,請立即執行以下步驟。步驟1–您必須在電腦上安裝最新版本的可視

夸克怎麼登入兩個設備?夸克瀏覽器是支援同時登陸兩個設備的,但是多數的小夥伴不知道夸克瀏覽器如何登陸兩個設備,接下來就是小編為用戶帶來的夸克登陸兩個設備方法圖文教程,有興趣的用戶快來一起看看吧!夸克瀏覽器使用教學夸克怎麼登入兩個裝置1、先開啟夸克瀏覽器APP,主頁點選【夸克網盤】;2、接著進入夸克網盤介面,選擇【我的備份】服務功能;3、最後選擇其中的【切換設備】即可更換新設備登陸兩個。

百度網盤不僅能儲存各種軟體資源,還能分享給別人,支援多端同步,如果你的電腦沒有下載客戶端,可以選擇進入網頁版使用。那麼百度網盤網頁版要怎麼登入呢?下面就來看看詳細介紹。 百度網盤網頁版登入入口:https://pan.baidu.com(複製連結至瀏覽器開啟) 軟體介紹 1、分享 提供文件分享功能,使用者將文件整理,分享給需要的小夥伴。 2、雲端 不佔用太多內存,大多數檔案都保存在雲端,有效節省電腦空間。 3、相簿 支援雲相簿功能,將照片匯入到雲盤中,然後整理,方便大家查看。
