vue2.0 實現路由守衛
路由跳轉前做一些驗證,比如登入驗證,是網站中的普遍需求。
對此,vue-route 提供的 beforeRouteUpdate 可以方便地實現導航守衛(navigation-guards)
全域性守衛
你可以使用 router.beforeEach 註冊一個全域性前置守衛:
router.beforeEach((to, form, 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。
例子
1.列舉需要判斷登入狀態的“路由集合”,當跳轉至集合中的路由時,如果“未登入狀態”,則跳轉到登入頁面Login;
2.當直接進入登入頁面Login時,如果“已登入狀態”,則跳轉到首頁Home;
全部程式碼
import Vue from "vue";
import VueRouter from "vue-router";
Vue.use(VueRouter);
//路由表
const routes = [
// 重定向定的是Home頁面
{
path: "/",
redirect: "/Home"
},
{
path: "/Login",
name: "Login",
component: () => import("@/components/Login.vue") //對應的元件模板
},
{
path: "/Home", //連結路徑
name: "Home",
component: () => import("@/components/Home.vue") //對應的元件模板
}
];
const router = new VueRouter({
routes //路由表 必寫的
});
//路由守衛
router.beforeEach((to, form, next) => {
const nextRoute = ["Home"];
// const auth = store.state.auth;
// console.log(to.name);
//未登入
if (nextRoute.indexOf(to.name) >= 0) {
//未登入
// console.log(localStorage.getItem("name"));
let name = localStorage.getItem("name");
if (name == null) {
router.push({ name: "Login" });
}
}
// 已登入狀態;當路由到login時,跳轉至home
if (to.name === "Login") {
let name = localStorage.getItem("name");
if (name != null) {
router.push({ name: "Home" });
}
}
next();
});
//匯出router
export default router;
相關文章
- Angular路由——路由守衛Angular路由
- vue2.0全域性路由守衛(全域性控制登入)Vue路由
- [NGX]Angular路由守衛初探(1)Angular路由
- Vue | 路由守衛面試常考Vue路由面試
- 如何實現一個react-router路由攔截(導航守衛)React路由
- Vue 導航守衛(路由的生命週期)Vue路由
- Angular專案路由配置與導航守衛Angular路由
- vue2.0元件內的守衛(beforeRouteLeave實現 編輯未儲存,彈窗提示)Vue元件
- Java登陸第四十天——Router路由守衛Java路由
- Angular入門到精通系列教程(13)- 路由守衛(Route Guards)Angular路由
- (系列十一)Vue3框架中路由守衛及請求攔截(實現前後端互動)Vue框架路由後端
- Vue — 導航守衛Vue
- Laravel guard 菊花守衛者Laravel
- 守衛者的挑戰
- 2024-07-18 給vue專案新增自定義路由守衛Vue路由
- 動手理解導航守衛(Vue)Vue
- “智慧糧倉”守衛中國飯碗
- Vue -- vue-全域性導航守衛Vue
- Vue的鉤子函式[路由導航守衛、keep-alive、生命週期鉤子]Vue函式路由Keep-Alive
- PHP 實現守護進PHP
- PHP 實現守護程式PHP
- “360安全衛士團隊版 · 青少年守護計劃”重磅釋出,守衛教育網路淨土
- 智慧門鈴攝像頭 一個守衛家園的忠誠衛士
- vue2.0實現購物車功能Vue
- 基於Ardalis.GuardClauses守衛元件的擴充元件
- vue2.0全家桶實現vivo商城 shopVue
- 路由器被黑?被篡改?路由衛士一鍵搞定路由器
- 用Python實現守護程式Python
- 長安“戰疫”網路安全衛士守護賽writeup
- 網路視覺化守衛“數字中國“資訊保安視覺化
- vue2.0實現底部導航切換效果Vue
- 前端路由實現原理前端路由
- 使用 swoole 實現程式的守護(三)
- 使用 SWOOLE 實現程式的守護(一)
- 使用 SWOOLE 實現程式的守護(二)
- shell 指令碼實現的守護程式指令碼
- Vlan間路由實驗(單臂路由實現法)薦路由
- [省選聯考 2024] 迷宮守衛 題解