文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
解决:spring-security,开放接口,允许不授权访问,仍然报403 | v1.0.0 | 学生宫布 | 8416837 | spring-boot 2.1.1 spring-security 5.1.2 |
报错全称
请求接口:
403 不允许访问
代码
.antMatchers("/login", "/logout", "/captchaImage", "/bigData/xxx/xxx").anonymous() // 开放接口给用户app调用
其它配置也试过,不行
疑似产生的原因
资源被封闭
弯路、坑
使用不同客户端调用这个开放接口,仍然都报403
分析
/login
可以成功调用,同样也是Post请求呀,为什么自定义的白名单路径就不行?
发现报403的开放接口加了注解(更细粒度的鉴权):@PreAuthorize("@ss.hasPermi('xxx:xxx:xxx')")
加了这个注解,即使开放了接口,仍然会进行鉴权;
加了这个注解,调用接口时,会切面进入PermissionService.java
(这个类是自定义的,非spring-security源码)的hasPermi函数
进行鉴权,因为是请求匿名登录,所以鉴权不会成功啦。
领悟
如果同等条件,有的行,有的不行,应马上地毯式比较二者代码有何区别,针对本问题,可以快速解决。
解决方案
1)去掉鉴权注解;
关于
若交流技术,请联系qq:8416837