Vue多页面路由守卫(鉴权处理)怎么实现?

多页面不想单页面可以使用 router.beforeEach 钩子。因为router都没使用了。那这种情况遇到需要权限才能访问的页面怎么办呢?

比如用户中心,要登录才能访问。

这里有个方式呢,就是利用路径匹配的方式达到拦截的效果。原理呢就是访问的时候去匹配该路由是否需要权限,如果需要就结合判断登录状态去拦截。

核心代码就在这:

/**
 *获取路由地址路径
 * @returns {string}
 * @constructor
 */
export function GetUrlRelativePath() {
    var url = document.location.toString();
    var arrUrl = url.split("//");

    var start = arrUrl[1].indexOf("/");
    var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符

    if(relUrl.indexOf("?") != -1){
        relUrl = relUrl.split("?")[0];
    }
    return relUrl;
}

/**
 * 需要权限路由
 * @type {string[]}
 */
export const authentication = [
    "aUser",
    "aBoardAdd"
];

定义好获取好需登录的路由路径名字。

 在主  js 文件中 使用,先匹配 再 判断状态:

import * as configTool from "../../../util" //导入鉴权等工具
Vue.prototype.configTool = configTool;

Vue.config.productionTip = false;


/**
 * 鉴权处理
 * @author ***
 * @type {string | *}
 */
const nowUrl = configTool.GetUrlRelativePath();
const jurisdiction = configTool.authentication.some(item=>nowUrl.indexOf(item) != -1);//indexOf() 如果不符合就返回-1,符合就返回位置
var getLocalData = localStorage.getItem('U_S'); // 读取字符串数据
var jsonObj = JSON.parse(getLocalData);
let token = jsonObj ? jsonObj['user_token'] : "";

if(jurisdiction && !token){ //如果是需要权限的页面没有登录token的话,就转回登录界面
  window.location.href="/login"+configTool.urlRouter()+"/"
}else {
  new Vue({
    render: h => h(App),
    store,
  }).$mount('#app')
}

 在创建 vue 实例之前 拦截即可。

 

 这里最重要的就是some( ) 跟indexOf() 方法了,拿到当前的路径去跟定义的的路径对象中的每个地址去比对。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 路由守卫是一种机制,用于在用户路由切换时对其进行监控和控制。路由鉴权是一种安全机制,用于验证用户是否有权限访问某个特定的路由或页面。 在 Vue 中,我们可以使用路由守卫实现路由鉴权路由守卫有三种类型:全局前置守卫、路由独享守卫和组件内的守卫。 全局前置守卫通过在创建 Vue Router 实例时添加 `beforeEach` 方法来实现。该方法接受一个回调函数,在每次路由切换前被触发。我们可以在回调函数中进行权限验证,例如判断用户是否登录以及是否有权限访问该路由。如果用户没有权限,我们可以通过 `next(false)` 或者 `next('/login')` 来中断路由导航或者跳转到登录页面。 路由独享守卫可以在路由配置中单独为某个路由添加 `beforeEnter` 方法来实现。该方法与全局前置守卫类似,可以在其中进行权限验证。 组件内的守卫包括 `beforeRouteEnter`、`beforeRouteUpdate` 和 `beforeRouteLeave`。这些守卫可以在组件内部使用,用于对组件内的路由进行验证和处理。例如,在 `beforeRouteEnter` 守卫中,我们可以通过回调函数的参数 `next` 来控制路由导航,判断用户是否有权限访问该路由。 使用路由守卫和路由鉴权可以有效地保护应用程序的安全性。通过在路由切换时进行权限验证,可以防止未授权的用户访问受限页面,并且可以根据需求进行灵活的权限控制。这是一个非常重要的概念,特别是在需要保护用户隐私和敏感数据的应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值