成功验证后,Spring安全性不会达到default-target-url

Ash*_*ish 11 java spring spring-security

我在我的应用程序中实现了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" />
Run Code Online (Sandbox Code Playgroud)

我想从/login.htm登录,在成功验证后,我希望用户点击dashboard.htm.Everythig是除了一个事实,即全成authetication之后,在没有打/dashboard.htm但命中context..but如果我手动输入URL dashboard.htm然后一切正常...... Yes..I有做工精细authticationSuccessHandler的实现.

vli*_*ios 14

尝试删除该default-target-url属性并添加以下内容:

<b:bean id="authenticationSuccessHandler" class="com.example.CustomSimpleURLAuthenticationSuccessHandler">
    <b:property name="defaultTargetUrl" value="/dashboard.htm"/>
</b:bean>
Run Code Online (Sandbox Code Playgroud)


Mir*_*ciu 8

<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);
      }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我使用这个问题的春天是不是重定向到默认目标网址的问题?.我试过这个并且它正在工作.

<form-login login-page="/login.htm" 
default-target-url="/dashboard.htm" 
always-use-default-target="true"/>
Run Code Online (Sandbox Code Playgroud)