Spring Security:方法不受 @PreAuthorize 注释的保护
Posted
技术标签:
【中文标题】Spring Security:方法不受 @PreAuthorize 注释的保护【英文标题】:Spring Security: method is not secured with @PreAuthorize annotation 【发布时间】:2011-06-28 16:39:38 【问题描述】:我想在我的托管会话 bean 中为特定角色 "ROLE_ADMIN"
保护方法
配置(applicationContext-security.xml):
<global-method-security pre-post-annotations="enabled" jsr250-annotations="enabled" secured-annotations="enabled"/>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/**" access="isAuthenticated()"/>
<intercept-url pattern="/**" access="permitAll()"/>
<form-login
login-processing-url="/j_spring_security_check"
login-page="/login.jsf"
default-target-url="/main.jsf"
authentication-failure-url="/login.jsf" />
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="false" />
</session-management>
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user1" password="user1" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
<beans:bean id="loggerListener" class="org.springframework.security.authentication.event.LoggerListener"/>
bean 的安全方法:
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String buy()
...
当我以user1
或anonym
登录并点击网页上的“购买”按钮时,它仍然重定向到下一页。
我预计会发生一些拒绝访问异常,但它没有。
【问题讨论】:
【参考方案1】:记得在你的 applicationContext-security.xml 上启用方法级安全性:
<sec:global-method-security secured-annotations="enabled" />
如果您将使用 Pre 或 Post 注释,请使用:
<security:global-method-security pre-post-annotations="enabled"/>
有关更多信息,请参阅:
http://forum.springsource.org/showthread.php?t=77862
注意:对于来自 jsr-250 的注释:
<sec:global-method-security jsr250-annotations="enabled" />
【讨论】:
实际上尝试过,它是一样的。据我了解,安全注释代表例如对于@Secured 注释,我根本不使用。我使用前置注释@PreAuthorize @sergionni:对不起,我会编辑给你一个更完整的答案。 @logui, ok),np.我正在分析我的配置,也许是拦截 url 问题,我还不知道 你的链接发现的maven问题,我根本不用maven @sergionni:你确定你的配置启用了前置后置注释并且没有抛出异常吗?您如何处理此类异常?以上是关于Spring Security:方法不受 @PreAuthorize 注释的保护的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式启用 Spring Security pre-post-annotations
在 Grails 中使用 Pre/Post Spring-Security Annotations
Spring Security SAML 可信证书条目不受密码保护
如何让 Spring Security 使用 OAUTH2 响应 Pre-Flight CORS 请求