使用Spring Security Java Config配置DefaultMethodSecurityExpressionHandler

时间:2016-01-06 00:08:38

标签: spring-security spring-boot

我试图在Spring Boot应用程序中使用Spring Security提供的Role Hierarchy功能,我发现了java config的一些问题。

在该应用程序中,我启用了GlobalMethodSecurity以使用@PreAuthorize注释。因此,为了使用Role Hierarchy支持,我需要做的是创建DefaultMethodSecurityExpressionHandler的新实例,并使用我们想要的配置设置RoleHierarchyImpl实例的实例(角色层次结构本身)。

但是,如果我尝试使用WebSecurityConfigurerAdapterconfigure(HttpSecurity http)方法执行此操作,我无法执行此操作,因为.expressionHandler()期待SecurityExpressionHandler<FilterInvocation> DefaultMethodSecurityExpressionHandlerSecurityExpressionHandler<MethodInvocation>

为了解决这个问题,我发现解决方案是创建GlobalMethodSecurityConfiguration的子类并覆盖创建ExpressionHandler bean的方法,就像在docs中描述的那样

GlobalMethodSecurityConfiguration - Spring Security Docs

通过这样说,我想知道.expressionHandler()方法是否也不允许进行此配置。如果没有,可能在指向GlobalMethodSecurityConfiguration的javadoc中的引用将是有用的。

在此之后,我认为WebSecurityConfigurerAdapter.expressionHandler的想法只适用于基于http请求的过滤器应用的安全性,并且不应该应用它在方法层面,但欢迎意见和建议确认我正在按照预期进行。

0 个答案:

没有答案