Spring MVC、Rest 和 Shiro。 @RequiresAuthentication 不起作用
Posted
技术标签:
【中文标题】Spring MVC、Rest 和 Shiro。 @RequiresAuthentication 不起作用【英文标题】:Spring MVC, Rest and Shiro. @RequiresAuthentication not works 【发布时间】: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
。我错过了什么?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于Spring MVC、Rest 和 Shiro。 @RequiresAuthentication 不起作用的主要内容,如果未能解决你的问题,请参考以下文章