Я делаю веб-приложение Spring MVC с некоторыми ресурсами RESTfull в качестве API.
Мне нужна часть RESTfull, чтобы иметь несколько пользовательских фильтров, так как я не хочу никакого перенаправления, и я хочу, чтобы любое исключениеперевести с соответствующим кодом ошибки HTTP и базовым описанием JSON.
С другой стороны, остальные сайты должны быть более распространенными и перенаправлять людей, когда они не вошли в систему и т. д.
Еще одна вещь, я хочу использовать аннотации @Secured и пост-аутентификацию в некоторых случаях.
Как правильно определить несколько пространств имен http (в Spring 3.1)?
Вот моя ошибочная конфигурация:
<global-method-security secured-annotations="enabled" />
<http pattern="/rest/**" authentication-manager-ref="authenticationManager" entry-point-ref="restAuthenticationEntryPoint">
<form-login login-page="/rest/login" login-processing-url="/rest/postlogin"
authentication-success-handler-ref="restAuthenticationSuccessHandler"
authentication-failure-handler-ref="restAuthenticationFailureHandler"
username-parameter="username" password-parameter="password" />
<logout logout-url="/rest/logout" invalidate-session="true" />
</http>
<http pattern="/**" authentication-manager-ref="authenticationManager">
<form-login login-page="/login" login-processing-url="/postlogin"
username-parameter="username" password-parameter="password" />
<logout />
</http>
Самое смешное, что эта конфигурация работает частично, так как я могу войти в систему с помощью / rest / login и получить ответ от своего пользовательского обработчика успеха.Я также могу войти из / login и получить правильное перенаправление на /.Выход из системы также работает нормально.
Далее, все компоненты контроллеров имеют @Secured ("ROLE_USER") в защищенных методах.Но все защищенные методы никогда не становятся безопасными. Почему это так?
@Secured({"ROLE_USER"})
@RequestMapping(method = RequestMethod.GET, headers = { "Range" })
public @ResponseBody
HttpEntity<List<T>> list(@RequestHeader("Range") String range) {
Я всюду читал документацию и запутался больше, чем когда-либо.
- Почему мои методы не защищены?
- Должно ли пространство имен http определять доступ, чтобы аннотации @Secured работали?
- Записывает ли пространство имен http мои аннотации @Secured?Если это так, как я могу определить несколько «страниц входа» с пользовательскими фильтрами и возможностью использовать аннотации?
Вот несколько фактов: * Я использую Spring и SpringSecurity 3.1 * У меня естьПользовательский AuthenticationManager для получения сведений о пользователях из спящего режима.* Некоторые контроллеры расширяют абстрактный класс, где находятся аннотации @Secured.Но это все еще не работает для простого контроллера.* Мои контроллеры обнаруживаются с контекстом: компонент-сканирование и базовый пакет.* Безопасность отлично работает с одним пространством имен http.
, пожалуйста, помогите, я схожу с ума от этого!