RuoYi-Vue-Plus分离版 - 免登录访问

Marimo_z
2025-04-06 / 0 评论 / 20 阅读 / 正在检测是否收录...

RuoYi-Vue-Plus分离版 - 免登录访问

在 RuoYi-Vue-Plus 中实现免登录访问,需结合前端路由白名单和后端接口放行策略。

一、前端免登录配置

  1. 配置公共路由ruoyi-ui/src/router/index.jsconstantRoutes 中添加免登录路由,示例:

    {
      path: '/public',
      component: () => import('@/views/public/index.vue'),
      hidden: true // 隐藏菜单项(可选)
    }

    注意:hidden: true 表示不在菜单栏显示该页面路径

  1. 扩展白名单列表 修改 ruoyi-ui/src/permission.js,将新增的路由路径加入白名单:

    whiteList = ['/login', '/public'];
    // 或动态扩展
    whiteList.push('/public');

    白名单中的路径将跳过登录校验直接访问

二、后端接口放行

根据 RuoYi-Vue-Plus 的权限框架(Sa-Token),可选择以下任一方式:

方式 1:通过配置文件放行

application.yml 中配置静态资源和接口路径:

security:
  excludes:
    - /public/**      # 放行所有以 /public 开头的接口
    - /static/**      # 放行静态资源
    - /api/public/**  # 自定义接口路径

此方法适用于全局性放行,如公共 API 或静态文件

方式 2:使用 @SaIgnore 注解

在 Controller 类或方法上添加注解,跳过权限校验:

@SaIgnore
@GetMapping("/public/data")
public R<?> getPublicData() {
    return R.ok("无需登录的数据");
}
  • 类级别注解:类下所有方法免校验。
  • 方法级别注解:仅当前方法免校验。
  • 注意:@SaIgnore优先级高于其他权限注解(如@SaCheckLogin

三、特殊情况处理

  1. 嵌套路由问题 若免登录页面包含子路由(如 children),需确保子路径也加入白名单:

    whiteList.push('/public', '/public/subpage');
  2. 接口与页面权限分离 若页面需调用后端接口,需同时放行前端路由和后端接口,例如:

    • 前端路径:/public
    • 后端接口:GET /api/public/data
  1. 动态路径处理 动态路由(如 /detail/:id)需在配置中使用通配符:

    security:
      excludes:
        - /detail/*

四、验证与调试

  1. 清除浏览器缓存:避免旧路由配置影响测试。
  2. 检查控制台日志:观察是否有权限拦截日志。
  3. 使用接口测试工具:直接访问接口验证是否放行。

五、注意事项

  1. 菜单隐藏:若不需要展示在菜单栏,路由配置中设置 hidden: true
  2. 安全风险:避免放行敏感接口(如数据修改接口)。
  3. 版本差异:RuoYi-Vue-Plus 使用 Sa-Token,而原版若依使用 Spring Security,两者注解不同(如@Anonymousvs@SaIgnore

通过以上步骤,可灵活实现特定页面的免登录访问。如需更复杂的权限控制(如部分内容需登录后查看),可结合前端动态路由和后端接口鉴权策略进一步优化。

1

评论 (0)

取消