Безопасность Spring не достигает default-target-url после успешной аутентификации - PullRequest
11 голосов
/ 12 марта 2012

Я реализовал spring-security в своем приложении, мой spring-security.xml имеет следующий тег form-login.

<form-login login-page="/login.htm" default-target-url="/dashboard.htm"
            authentication-failure-url="/login.htm?error=true"
            authentication-success-handler-ref="authenticationSuccessHandler" />

Я хочу войти в систему из /login.htm и после успешной аутентификации хочупользователь нажал на dashboard.htm.Everythig работает нормально, за исключением того факта, что после успешной аутентификации он не попадает в /dashboard.htm, а попадает в контекст ... но если я вручную наберу dashboard.htm в URL, то все будет нормально ... Да ... У меня естьреализация authticationSuccessHandler.

Ответы [ 4 ]

14 голосов
/ 13 марта 2012

Попробуйте удалить атрибут default-target-url и добавьте следующее:

<b:bean id="authenticationSuccessHandler" class="com.example.CustomSimpleURLAuthenticationSuccessHandler">
    <b:property name="defaultTargetUrl" value="/dashboard.htm"/>
</b:bean>
8 голосов
/ 02 мая 2013
<beans:bean id="loginSuccessHandler" class="com.example.LoginSuccessHandler">
    <beans:property name="defaultTargetUrl" value="/security/success"/>
    <beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
</beans:bean>

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

     @Override
     public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                    Authentication authentication) throws ServletException, IOException {
         request.getSession().setMaxInactiveInterval(60 * 60); //one hour
         System.out.println("Session set up for 60min");
         super.onAuthenticationSuccess(request, response, authentication);
      }
}
6 голосов
/ 24 июля 2013

Я использую это предложение из вопроса spring не перенаправляет на целевой URL по умолчанию? .Я попробовал это, и это работает.

<form-login login-page="/login.htm" 
default-target-url="/dashboard.htm" 
always-use-default-target="true"/>
0 голосов
/ 10 сентября 2015

Как вы можете видеть на изображении, есть какой-то плохой дизайн (IMO всегда перенаправляет на default-target-url). Когда вы переходите к форме входа с запрещенного ресурса, он будет перенаправлять вас на этот URL, а не через the default-target-url

http://i.stack.imgur.com/fj9ou.png

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