【发布时间】:2016-01-03 09:24:36
【问题描述】:
我在尝试使用 JavaConfig 而不是 XML 在 Spring Security 中实现角色层次结构时遇到了一些问题。有没有办法使用 @Secured 注释而不是 HttpSecurity antMatchers 来实现角色层次结构?如果不提供正确的字符串模式,我似乎无法将角色层次结构添加到 HttpSecurity,但我希望能够仅使用 @Secured 做出访问决策。
java.lang.IllegalStateException: At least one mapping is required (i.e. authorizeRequests().anyRequest.authenticated())
@Bean
public RoleHierarchyImpl roleHierarchy() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_USER");
return roleHierarchy;
}
private SecurityExpressionHandler<FilterInvocation> webExpressionHandler() {
DefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
defaultWebSecurityExpressionHandler.setRoleHierarchy(roleHierarchy());
return defaultWebSecurityExpressionHandler;
}
public void configure(HttpSecurity http){
http.authorizeRequests().expressionHandler(webExpressionHandler()).and().//other stuff
}
非常感谢您对此的任何帮助。
【问题讨论】:
-
你的 RoleHierarchyImpl 是什么样的?
-
编辑了我的帖子。主要关注stackoverflow.com/questions/29888458/…,但有什么办法可以摆脱antMatchers,因为我只想使用@Secured 注释
标签: java spring spring-security