Spring Security несколько фильтровChainProxy сопоставления / фильтры, пользовательские фильтры Вывод Json - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть часть моего веб-приложения, которая представляет собой API-интерфейс RESTfull, и часть более стандартных веб-страниц.

Я хочу иметь часть REST с некоторыми пользовательскими фильтрами, такими как EntryPoint, SuccessHandler и FailureHandler.,Эта часть находится в / rest / ** mapping.

С другой стороны, все остальное должно иметь более общие фильтры и отображается с /**.

Проблема в том, чтобы найтипростой способ определить filterChainProxy с различными фильтрами отображения.

В настоящее время это решение не работает:

    <!-- Normal web app -->
<http auto-config="true" use-expressions="true" authentication-manager-ref="authenticationManager">
    <form-login/>
    <logout/>
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>

<!-- Configure RESTfull services -->
<http use-expressions="true" authentication-manager-ref="authenticationManager" entry-point-ref="restAuthenticationEntryPoint" >
    <form-login authentication-success-handler-ref="restAuthenticationSuccessHandler" login-page="/rest/login" username-parameter="username" password-parameter="password" />
    <logout logout-url="/rest/logout" />
    <intercept-url pattern="/rest/**" method="GET" access="hasRole('ROLE_USER')" />
    <intercept-url pattern="/rest/**" method="POST" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/rest/**" method="PUT" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/rest/**" method="DELETE" access="hasRole('ROLE_ADMIN')" />
</http>

Он жалуется на: универсальное совпадение перед другими шаблонами.

Есть ли способ определить такую ​​вещь, не прибегая к определению filterChainProxy с определением? Версия http действительно очень помогает уменьшить объем конфигурации, так как мне придется вручнуюустановить UsernamePasswordAuthenticationFilter и т. д.

Следующая проблема более проста: я должен ответить после аутентификации при входе в форму с помощью объекта JSON.

Пока что я реализовал SuccessHandler (на самом делеверсия SimpleUrlAuthenticationSuccessHandler без части перенаправления).

Как записать вывод JSON?

У меня должно быть что-то вроде этого:

HTTP 200 OK

с:

{"success":true,"customer {"email":"customer@email.com","session_id":"b83a41dfaca6785399f00837888886e646ff9088"}}

и аналогичная вещь с FailureHandler.Это должно быть довольно просто, и это, безусловно, очень простая вещь, но как ты это делаешь?Перенаправление на пользовательский контроллер не является решением, так как у меня будет статус перенаправления 301, который очень простой клиент REST может не понять.

По крайней мере, я хочу иметь только заголовок http инет тела вообще.

спасибо!

1 Ответ

1 голос
/ 30 декабря 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...