RuoYi-Vue-Plus分离版 - 免登录访问
在 RuoYi-Vue-Plus 中实现免登录访问,需结合前端路由白名单和后端接口放行策略。
一、前端免登录配置
配置公共路由 在
ruoyi-ui/src/router/index.js
的constantRoutes
中添加免登录路由,示例:{ path: '/public', component: () => import('@/views/public/index.vue'), hidden: true // 隐藏菜单项(可选) }
注意:
hidden: true
表示不在菜单栏显示该页面路径
扩展白名单列表 修改
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
)
三、特殊情况处理
嵌套路由问题 若免登录页面包含子路由(如
children
),需确保子路径也加入白名单:whiteList.push('/public', '/public/subpage');
接口与页面权限分离 若页面需调用后端接口,需同时放行前端路由和后端接口,例如:
- 前端路径:
/public
- 后端接口:
GET /api/public/data
- 前端路径:
动态路径处理 动态路由(如
/detail/:id
)需在配置中使用通配符:security: excludes: - /detail/*
四、验证与调试
- 清除浏览器缓存:避免旧路由配置影响测试。
- 检查控制台日志:观察是否有权限拦截日志。
- 使用接口测试工具:直接访问接口验证是否放行。
五、注意事项
- 菜单隐藏:若不需要展示在菜单栏,路由配置中设置
hidden: true
。 - 安全风险:避免放行敏感接口(如数据修改接口)。
- 版本差异:RuoYi-Vue-Plus 使用 Sa-Token,而原版若依使用 Spring Security,两者注解不同(如
@Anonymous
vs@SaIgnore
)
通过以上步骤,可灵活实现特定页面的免登录访问。如需更复杂的权限控制(如部分内容需登录后查看),可结合前端动态路由和后端接口鉴权策略进一步优化。
评论 (0)