我有一个spring引导应用程序,我正在尝试实现一个扩展标准@RolesAllowed的自定义授权模式。
我已经创建了一个自定义AccessDecisionManager wich读取@RolesAllowed,如果有一个用我的自定义注释注释的参数,我将检查用户是否在指定的范围内具有指定的角色。
@RequestMapping(value = "/{id}/user/list", method = RequestMethod.GET)
@RolesAllowed("manager")
public List<User> userList(@PathVariable("id") @AuthScope Project project) throws NotFoundException {
return projectService.findUsersByProject(project);
}我已经用自定义授权模式所需的逻辑实现了一个AccessDecisionManager,现在我很难配置我的应用程序安全性来使用这个AccessDecisionManager。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.accessDecisionManager(accessDecisionManager())
.anyRequest().permitAll()
.and()
.csrf()
.disable()
.httpBasic();
}下面是我遇到的错误:
AccessDecisionManager does not support secure object class: class org.springframework.security.web.FilterInvocation对我做错了什么有什么想法吗?干杯
发布于 2014-09-18 17:06:39
您要求将您的AccessDecisionManager应用于HTTP链(通过将其打包到HttpSecurity中),但是(没有看到代码),我猜它并不是为了支持它。它更可能与GlobalMethodSecurityConfiguration一起工作。我认为您需要扩展该类add重写accessDecisionManager()方法。这里的例子:https://spring.io/blog/2013/07/04/spring-security-java-config-preview-method-security/。
发布于 2014-09-19 12:48:18
“你说得对,”戴夫,我就是这么做的。
public class MethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {
@Override
protected AccessDecisionManager accessDecisionManager() {
return new AuthScopeDecisionManager();
}
}https://stackoverflow.com/questions/25911265
复制相似问题