@RolesAllowed не работает - PullRequest
       15

@RolesAllowed не работает

0 голосов
/ 03 марта 2012

Я искал ответ, но не нашел его.Если я добавлю <intercept-url pattern="/test*" access="ROLE_USER" /> в <form-login> моего spring-security.xml, все будет работать предсказуемо.Но если я хочу, чтобы @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" />

ХорошоВ этом случае и Джон, и Джейн могут получить доступ к тестовой странице.Я думаю, что пропустил что-то простое, помощь была бы оценена.

1 Ответ

2 голосов
/ 03 марта 2012

Если вы измените @RolesAllowed на @PreAuthorize("hasAuthority('ROLE_ADMIN')") и определите global-method-security с атрибутом pre-post-annotations="enabled", это работает?

Я полагаю, что оно также не работает, потому что вы определяете global-method-securityдругая конфигурация в конфигурации сервлета вместо контекста приложения.

См. аналогичный пост: https://stackoverflow.com/a/2525048/352708

...