RuoYi
2024-12-04 2335157f6e72b84c388baa4285885cab37e62a41
白名单支持对通配符路径匹配
2 files modified
29 ■■■■ changed files
ruoyi-ui/src/permission.js 11 ●●●● patch | view | raw | blame | history
ruoyi-ui/src/utils/validate.js 18 ●●●● patch | view | raw | blame | history
ruoyi-ui/src/permission.js
@@ -4,11 +4,16 @@
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isPathMatch } from '@/utils/validate'
import { isRelogin } from '@/utils/request'
NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register']
const whiteList = ['/login', '/register', '/register*', '/register/*']
const isWhiteList = (path) => {
  return whiteList.some(pattern => isPathMatch(pattern, path))
}
router.beforeEach((to, from, next) => {
  NProgress.start()
@@ -18,7 +23,7 @@
    if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else if (whiteList.indexOf(to.path) !== -1) {
    } else if (isWhiteList(to.path)) {
      next()
    } else {
      if (store.getters.roles.length === 0) {
@@ -43,7 +48,7 @@
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
    if (isWhiteList(to.path)) {
      // 在免登录白名单,直接进入
      next()
    } else {
ruoyi-ui/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,7 +99,7 @@
 * @returns {Boolean}
 */
export function isString(str) {
  return typeof str === 'string' || str instanceof String;
  return typeof str === 'string' || str instanceof String
}
/**