RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
若依前端框架通过permission.js
文件中的whiteList
进行配置的,比如登录、注册登连接,需要能直接跳转,只需要在whiteList
中配置上对应的路由即可。
const whiteList = ['/login', '/register']
然后在路由打开前,判断路由是否在白名单内。
但是这个判断逻辑存在一个问题,就是判断方法使用的whiteList.indexOf(to.path)
,这样如果我们路由携带参数的话,会无法实现,因为参数是动态的,我们无法配置白名单。
为了实现跳转,我们需要替换whiteList.indexOf(to.path)
方法,通过正则表达式的方式进行匹配。
增加正则表达式校验方法
在utils\validate.js
文件中,增加正则校验方法
/**
* 路径匹配器
* @param {string} pattern
* @param {string} path
* @returns {Boolean}
*/
export function isPathMatch(pattern, path) {
const regexPattern = pattern.replace(/\//g, '\\/').replace(/\*\*/g, '.*').replace(/\*/g, '[^\\/]*')
const regex = new RegExp(`^${regexPattern}$`)
return regex.test(path)
}
修改permission.js
在permission.js
引入新增的方法,并将原来的whiteList.indexOf(to.path)
替换成新方法。
import { isPathMatch } from '@/utils/validate'
const isWhiteList = (path) => {
return whiteList.some(pattern => isPathMatch(pattern, path))
}
评论 (0)