2012-03-02 6 views
0

Я искал ответ, но не нашел его. Если я добавлю <intercept-url pattern="/test*" access="ROLE_USER" /> в файл <form-login> моего файла spring-security.xml, все работает предсказуемо. Но если я хочу @RolesAllowed("ROLE_ADMIN") действовать по методу:@RolesAllowed не работает

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

И если весна-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" /> 

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

+0

Это шутка о формулировке вопроса? Очень забавно. Все, что я могу сказать в своей собственной защите, это то, что я русский. –

ответ

2

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

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

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

Смежные вопросы