2014-02-21 3 views
2

Как переопределить сообщение безопасности весны «Метод проверки подлинности не поддерживается: GET»?Специальное сообщение Spring Security для «Метод проверки подлинности не поддерживается: GET»

В spring-security-code-3.1.0.RELEASE.jar-> org/springframework/security/messages.properties нет ключа для переопределения этого сообщения.

Есть ли другой способ отменить это сообщение?

Я разрешаю серверу аутентифицироваться с использованием почтового метода. Но когда я напрямую вызываю/j_spring_security_check, используя сообщение get, сервер возвращается выше сообщения.

Заранее спасибо.

ответ

2

Чтобы изменить сообщение Переопределить attemptAuthentication метод UsernamePasswordAuthenticationFilter класса и установить пользовательское сообщение, где AuthenticationServiceException брошенный.

Ref: Spring Source Code Link

--или--

Чтобы переопределить поведение яровой безопасности по умолчанию для запроса postOnly, если вы не хотите конкретное сообщение используйте следующий метод: org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler будет обрабатывать все проверки подлинности связанных с исключениями. Который будет обрабатывать org.springframework.security.authentication.AuthenticationServiceException, который был сброшен, когда весенняя безопасность настроена как postOnly, поэтому просто перенаправляйте страницу, когда это исключение было выбрано.

Чтобы изменить настройки по умолчанию добавьте ниже код в applicationContext.xml

<bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler"> <property name="defaultFailureUrl" value="LOGIN_ERROR_PAGE_URL" /> <property name="exceptionMappings"> <props> <prop key="org.springframework.security.authentication.AuthenticationServiceException">REDIRECT_PAGE_URL</prop> </props> </property> </bean>

1

Когда приложение получает запрос /j_spring_security_check, активируется настраиваемый подкласс AbstractAuthenticationProcessingFilter.

В моем приложении это UsernamePasswordAuthenticationFilter, который по умолчанию имеет значение postOnly, равное true.

Чтобы переопределить postOnly к ложным, вам необходимо обновить определение компонента фильтра обработки аутентификации, как показано ниже:

<bean id="authenticationFilter" 
     class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" 
     p:postOnly="false" /> 

И следующие изменения также требуется в web.xml

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

Надеюсь, это поможет вам.

Шишир

+0

Я должен разрешить только после только, но когда пользователь прямой удар с помощью браузера для '/ j_spring_security_check', то это сообщение будет приходить так просто хочу, чтобы переопределить это сообщение. Я не хочу поддерживать GET. Так есть ли способ изменить сообщение? –

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