RuoYi
2024-12-04 535c5bd814fab51e80fe6eebe711480d362f9e3e
白名单支持对通配符路径匹配
已修改2个文件
35 ■■■■■ 文件已修改
src/permission.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/validate.js 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.js
@@ -3,15 +3,19 @@
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isHttp } from '@/utils/validate'
import { isHttp, isPathMatch } from '@/utils/validate'
import { isRelogin } from '@/utils/request'
import useUserStore from '@/store/modules/user'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'
NProgress.configure({ showSpinner: false });
NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register'];
const whiteList = ['/login', '/register']
const isWhiteList = (path) => {
  return whiteList.some(pattern => isPathMatch(pattern, path))
}
router.beforeEach((to, from, next) => {
  NProgress.start()
@@ -21,7 +25,7 @@
    if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else if (whiteList.indexOf(to.path) !== -1) {
    } else if (isWhiteList(to.path)) {
      next()
    } else {
      if (useUserStore().roles.length === 0) {
@@ -50,7 +54,7 @@
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
    if (isWhiteList(to.path)) {
      // 在免登录白名单,直接进入
      next()
    } else {
src/utils/validate.js
@@ -1,13 +1,25 @@
/**
 * 路径匹配器
 * @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)
}
/**
 * 判断value字符串是否为空 
 * @param {string} value
 * @returns {Boolean}
 */
export function isEmpty(value) {
  if (value == null || value == "" || value == undefined || value == "undefined") {
    return true;
    return true
  }
  return false;
  return false
}
/**
@@ -87,10 +99,7 @@
 * @returns {Boolean}
 */
export function isString(str) {
  if (typeof str === 'string' || str instanceof String) {
    return true
  }
  return false
  return typeof str === 'string' || str instanceof String
}
/**