首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-boot扩展授权

spring-boot扩展授权
EN

Stack Overflow用户
提问于 2014-09-18 11:18:00
回答 2查看 2.9K关注 0票数 2

我有一个spring引导应用程序,我正在尝试实现一个扩展标准@RolesAllowed的自定义授权模式。

我已经创建了一个自定义AccessDecisionManager wich读取@RolesAllowed,如果有一个用我的自定义注释注释的参数,我将检查用户是否在指定的范围内具有指定的角色。

代码语言:javascript
复制
@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

代码语言:javascript
复制
 @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .authorizeRequests()
                    .accessDecisionManager(accessDecisionManager())
                    .anyRequest().permitAll()
                    .and()
                .csrf()
                    .disable()
                    .httpBasic();
    }

下面是我遇到的错误:

代码语言:javascript
复制
AccessDecisionManager does not support secure object class: class org.springframework.security.web.FilterInvocation

对我做错了什么有什么想法吗?干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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/

票数 0
EN

Stack Overflow用户

发布于 2014-09-19 12:48:18

“你说得对,”戴夫,我就是这么做的。

代码语言:javascript
复制
public class MethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {

    @Override
    protected AccessDecisionManager accessDecisionManager() {
        return new AuthScopeDecisionManager();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25911265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档