xkcoding / spring-boot-demo

🚀一个用来深入学习并实战 Spring Boot 的项目。
https://parg.co/UZM
MIT License
33.17k stars 10.89k forks source link

spring security demo 版本问题 #160

Closed pigzwy closed 4 years ago

pigzwy commented 4 years ago

按照demo逻辑写的代码,最后启动程序报错

Can't configure anyRequest after itself

跟老哥写的代码一模一样了,还是启动不起来,最后排查到我用的是spring boot 2.3.0,demo里用的是2.1.0

spring security版本分别为 5.1.1 - 5.3.2 修改版本为spring boot 2.1.0之后,可以启动了。

但是我们的项目中用的是2.3.0的版本,对比发现是这两行代码版本的区别

 // RBAC 动态 url 认证
.anyRequest()
.access("@rbacAuthorityService.hasPermission(request,authentication)")

我找了好久不知道怎么解决这个问题, 这里想问下 spring boot 2.3.0版本下怎么使用这个demo!

xkcoding commented 4 years ago

你好,我刚刚查阅了下 spring security 5.4.1 的官方文档,确实调用方式有些变化,后面我也会考虑升级 Spring Boot 版本,但是当前建议你先按照这种方式尝试一下

定义校验类及方法

public class WebSecurity {
        public boolean check(Authentication authentication, HttpServletRequest request) {
                ...
        }
}

调用方式:

http
    .authorizeRequests(authorize -> authorize
        .antMatchers("/user/**").access("@webSecurity.check(authentication,request)")
        ...
    )

参考链接:https://docs.spring.io/spring-security/site/docs/5.4.1/reference/html5/#el-access-web-beans

kayyz commented 4 years ago
// 所有请求都需要登录访问
.anyRequest()
.authenticated()

把这两行代码注释掉就好了