【问题标题】:Spring MVC, Rest and Shiro. @RequiresAuthentication not worksSpring MVC、Rest 和 Shiro。 @RequiresAuthentication 不起作用
【发布时间】:2015-02-25 12:48:56
【问题描述】:

我使用 Spring 4.1.2、Shiro 1.2.3(核心、web、spring)并且我正在创建 RestControllers。在示例中的类中,我使用 @RequiresAuthentication 注释来防止访问方法。

@RestController
@RequestMapping("/api")
public class CarController {

    @RequestMapping("/secure")
    @RequiresAuthentication
    public String secure() {
        Subject subject = SecurityUtils.getSubject();
        return "Should be 'true' == " + subject.isAuthenticated();
    }


    @RequestMapping("/insecure")
    public String insecure() {
        Subject subject = SecurityUtils.getSubject();
        return "Should be 'false' == " + subject.isAuthenticated();
    }
}

不幸的是,我可以访问这两种方法。由于subject.isAuthenticated(),它们都返回false。我错过了什么?

【问题讨论】:

    标签: java spring spring-mvc shiro


    【解决方案1】:

    我找到了答案。我必须在我的 Java Spring 配置中添加以下代码:

    // enable shiro annotations
    @DependsOn("lifecycleBeanPostProcessor")
    @Bean
    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
        DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator();
        proxyCreator.setProxyTargetClass(true);
        return proxyCreator;
    }
    
    // enable shiro annotations
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {
        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
        advisor.setSecurityManager(securityManager);
        return advisor;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2013-02-24
      • 2012-03-08
      • 2015-07-14
      • 1970-01-01
      • 2014-08-31
      • 2018-06-07
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多