vue 前端守卫 登录验证权限

 

举例子写三个页面

home需要token,login和register页面不需要,直接放行

在routes内加上meta属性标记

 

页面路由加上标志:

import Vue from 'vue';
import VueRouter from 'vue-router'

// 使用路由插件
Vue.use(VueRouter)

// 引入路由
import Login from '@/components/User/Login'
import Register from '@/components/User/register'
import Home from '@/components/Home/Home'
const router = new VueRouter({

        routes:[
            {
                path:"/login",
                component:Login,
                meta:{
                    auth:false
                }
            },
            {
                path:"/register",
                component:Register,
                meta:{
                    auth:false
                }
            },
            {
                path:"/home",
                component:Home,
                meta:{
                    auth:true
                }
            }
        ]

})

auth: true 

下面的路由守卫来判断是否为true,需要验证

false则不需要,直接放行

 

router.beforeEach((to, from, next) => {
    var token = localStorage.getItem("token");
  
    // 需要验证权限的页面
    if (to.meta.auth) {
        // 带有token可进入
        if (token) {
            next();
        }else{
            next("login");
        }
            
      }
    //   非验证页面直接放行
      else{
        next();
      }
    }
)


export default router

 

 

这个只能判断是否带了token,不能判断token是否有效,比如手动在浏览器伪造加token  ,那么路由会认为通过 放行

所以还需要加上请求拦截器才可以。

posted @ 2022-05-31 13:47  Hello霖  阅读(160)  评论(0编辑  收藏  举报