@RolesAllowed 不起作用

问题描述 投票:0回答:1

我寻找答案,但没有找到。如果我在 spring-security.xml 的

<intercept-url pattern="/test*" access="ROLE_USER" />
中添加
<form-login>
,一切都会按预期进行。但如果我想让
@RolesAllowed("ROLE_ADMIN")
代表该方法:

@RolesAllowed("ROLE_ADMIN")
@RequestMapping(value="/test", method = RequestMethod.GET)
public String test() {
    return "test";
}        

如果 spring-security.xml 看起来像这样(启用了 jsr250 注释):

<http auto-config="true">
    <form-login login-page="/login.html" 
                default-target-url="/welcome.html"
                authentication-failure-url="/loginfailed.html" />
    <logout logout-success-url="/logout.html" />
</http>          

<authentication-manager>
  <authentication-provider>
        <user-service>
                <user name="john" password="doe" authorities="ROLE_ADMIN" />
                <user name="jane" password="doe" authorities="ROLE_USER" />
        </user-service>
  </authentication-provider>
</authentication-manager>

<global-method-security   secured-annotations="enabled" jsr250-annotations="enabled" />

好吧,在这种情况下,John 和 Jane 都可以访问测试页面。我想我错过了一些基本的东西,我们将不胜感激。

java annotations spring-security
1个回答
7
投票

如果将

@RolesAllowed
更改为
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
并使用
global-method-security
属性定义
pre-post-annotations="enabled"
,它可以工作吗?

另外,我认为它不起作用,因为您在 servlet 配置而不是应用程序上下文中定义了

global-method-security
和其他配置。

参见类似的帖子:https://stackoverflow.com/a/2525048/352708

© www.soinside.com 2019 - 2024. All rights reserved.