在項目開發過程中,經常會需要登錄、注冊、忘記密碼等,也有很多頁面是需要登錄后才能訪問,有些頁面是無需登錄就可以訪問的,那么vue是怎么來限制這些訪問權限問題的呢?
vue-router導航守衛的beforeEach方法做權限限制,了解更多導航守衛詳情,請點擊 這里 訪問官方文檔
在main.js中使用:
router.beforeEach((to, from, next) => { // 使用鈎子函數對路由進行權限跳轉
const role = localStorage.getItem('username');
if ( !role && to.path !== '/login' && to.path !== '/register' ) { // 如果用戶不存在,並且訪問的頁面不是登錄和注冊,就前往登錄頁面
next('/login');
} else if ( to.meta.permission ) { // 如果是管理員權限則可進入,這里只是簡單的模擬管理員權限而已
role === 'admin' ? next() : next('/403');
} else {
}
})
還有一種方法,是使用vue-router的重定向功能,實現路徑的限制:
在router的index.js中:
export default new Router({
routes: [
{
path: '/',
redirect: '/home' // 任何沒有具體路徑的訪問,我都讓它重定向到home主頁,重定向在限制用戶手動修改URL時誤操作很管用
},
{
path: '*',
redirect: '/404'
}
]
vue-router權限控制我暫時了解的就是兩種,如果還有其他的我會繼續補充,希望能給你提供到幫助
