2017-10-16 22 views
1

私は問題に直面しています。デフォルトでは、認証後の春のセキュリティは、アクセスしようとした保護されたページにあなたをリダイレクトします。スプリングセキュリティ。認証後に保護されたページにリダイレクト

私は自分の成功ハンドラ

@Component 
class MyS: AuthenticationSuccessHandler { 
    override fun onAuthenticationSuccess(request: HttpServletRequest?, response: HttpServletResponse?, authentication: Authentication?) { 

     response?.sendRedirect(request?.getHeader(HttpHeaders.REFERER)) 

    } 
} 

class SecurityConfigTH(@Autowired private val myHandler: MyS) : WebSecurityConfigurerAdapter() { 
... 
    .formLogin() 
     .loginPage("/en/login") 
     .successHandler(myHandler) 
     .permitAll() 
} 

を実装する場合、私は同じ効果を達成することはできません。私はリファラーにリダイレクトしようとしましたが、この場合リファラーは/ en/loginページです。

基本的には:

  1. ユーザー認証ユーザーが再び/protectedにリダイレクトする必要があります後でそれを行う方法

/loginページ

  • へのアクセス保護されたURLに/protected
  • リダイレクトユーザーを試してみてくださいカスタムsuccessHandler?

  • 答えて

    1

    私のプロジェクトでは、私はDefaultSavedRequestを使って私の要求を完了しました。 DefaultSavedRequestクラスは、認証が成功した後にAbstractAuthenticationProcessingFilterおよびSavedRequestAwareWrapperによってリクエストを再現するために使用されます。このクラスのインスタンスは、ExceptionTranslationFilterによって認証例外時に格納されます。

    https://docs.spring.io/spring-security/site/docs/4.1.2.RELEASE/apidocs/org/springframework/security/web/savedrequest/DefaultSavedRequest.html

    @Override 
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) 
         throws IOException, ServletException { 
        DefaultSavedRequest defaultSavedRequest = (DefaultSavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUEST"); 
        if(defaultSavedRequest != null){ 
         String targetURL = defaultSavedRequest.getRedirectUrl(); 
         redirectStrategy.sendRedirect(request, response, targetURL); 
         return; 
        } 
    } 
    
    0

    Mhodの答えのおかげで、これはトリックをしました。

    @Component 
    class MyS: AuthenticationSuccessHandler { 
        override fun onAuthenticationSuccess(request: HttpServletRequest?, response: HttpServletResponse?, authentication: Authentication?) { 
    
         val defaultSavedRequest = request?.session?.getAttribute("SPRING_SECURITY_SAVED_REQUEST") as DefaultSavedRequest 
         response?.sendRedirect(defaultSavedRequest.requestURI) 
    
        } 
    } 
    
    関連する問題