Spring Security @RolesAllowed不起作用

eblbsuwk  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(193)

我寻找答案,但没有找到。如果我在spring-security.xml的<form-login>中添加<intercept-url pattern="/test*" access="ROLE_USER" />,一切都可以预料到。但是如果我想让@RolesAllowed("ROLE_ADMIN")来执行这个方法:

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

如果spring-security.xml看起来像这样(启用了jsr 250-annotations):

<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都可以访问测试页面。我想我错过了一些基本的东西,帮助将不胜感激。

rkue9o1l

rkue9o1l1#

如果将@RolesAllowed更改为@PreAuthorize("hasAuthority('ROLE_ADMIN')"),并使用pre-post-annotations="enabled"属性定义global-method-security,是否有效?
另外,我认为它不起作用是因为您在servlet config而不是应用程序上下文中定义了global-method-security和其他配置。
See similar post:https://stackoverflow.com/a/2525048/352708

相关问题