У меня есть часть моего веб-приложения, которая представляет собой 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 инет тела вообще.
спасибо!