参考资料:
Ruoyi框架中访问路径在提示认证失败,无法访问系统资源_认证失败,无法访问系统资源
在修改完若依项目之后,给他添加了一个接口之后:
出现了这样的内容:
{ "msg": "请求访问:/code/list,认证失败,无法访问系统资源", "code": 401 }
这里如何解决?
一、在 SecurityConfig 中设置httpSecurity 配置匿名访问
这里区分一下下面两个方法:
anonymous() 允许匿名用户访问,不允许已登入用户访问
permitAll() 不管登入,不登入 都能访问
/ 使用 permitAll() 方法所有人都能访问,包括带上 token 访问 .antMatchers("/admins/**").permitAll() // 使用 anonymous() 所有人都能访问,但是带上 token 访问后会报错 .antMatchers("/admins/**").anonymous()
第二种解决方法
在对应的方法或类上面使用@Anonymous注解
Anonymous注解 允许 匿名访问不鉴权
// 类上定义匿名注解,作用于所有的方法 @Anonymous @RestController @RequestMapping("/system/xxxx") public class SysXxxxController extends BaseController { } // 方法定义匿名注解,作用于单独的方法 @Anonymous @GetMapping("/list") public List<SysXxxx> list(SysXxxx xxxx) { return xxxxList; }
匿名访问的方法上面@PreAuthorize权限注解也需要去掉,因为已经使用匿名访问了,权限自然也不需要去验证了。
前端不登录如何直接访问
如果是前端页面可以在src/permission.js配置whiteList属性白名单即可。
操作实例:
在controller层中添加@Anonymous
也可以在ruoyi-framework的SecurityConfig中添加过滤路径