복붙노트

[SPRING] Spring 보안이 인증 성공 후 default-target-url을 치지 않음

SPRING

Spring 보안이 인증 성공 후 default-target-url을 치지 않음

내 응용 프로그램에서 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에서 로그인하고 성공적인 authetication 후에 사용자가 dashboard.htm을 치길 원합니다. Everythig는 성공한 authetication 후에 /dashboard.htm을 치지 않지만 컨텍스트에 도달한다는 사실을 제외하고는 정상적으로 작동합니다.하지만 수동으로 dashboard.htm을 입력하면 모든 것이 올바르게 작동합니다 ... 예 .. authticationSuccessHandler 구현.

해결법

  1. ==============================

    1.default-target-url 속성을 제거하고 다음을 추가하십시오.

    default-target-url 속성을 제거하고 다음을 추가하십시오.

    <b:bean id="authenticationSuccessHandler" class="com.example.CustomSimpleURLAuthenticationSuccessHandler">
        <b:property name="defaultTargetUrl" value="/dashboard.htm"/>
    </b:bean>
    
  2. ==============================

    2.

    <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);
          }
    }
    
  3. ==============================

    3.나는 봄이 기본 대상 URL로 리디렉션되지 않는 질문에서이 제안을 사용합니다. 나는 이것을 시도하고 그것이 효과가있다.

    나는 봄이 기본 대상 URL로 리디렉션되지 않는 질문에서이 제안을 사용합니다. 나는 이것을 시도하고 그것이 효과가있다.

    <form-login login-page="/login.htm" 
    default-target-url="/dashboard.htm" 
    always-use-default-target="true"/>
    
  4. ==============================

    4.이미지에서 볼 수 있듯이 나쁜 디자인이 있습니다 (IMO는 항상 default-target-url로 리디렉션됩니다). 금지 된 리소스에서 로그인 양식으로 이동하면 해당 URL로 리디렉션되고 default-target-url을 통해 이동하지 않습니다

    이미지에서 볼 수 있듯이 나쁜 디자인이 있습니다 (IMO는 항상 default-target-url로 리디렉션됩니다). 금지 된 리소스에서 로그인 양식으로 이동하면 해당 URL로 리디렉션되고 default-target-url을 통해 이동하지 않습니다

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

  5. from https://stackoverflow.com/questions/9672850/spring-security-not-hitting-default-target-url-after-successful-authtication by cc-by-sa and MIT license