2017-08-08 10 views
0

私はspring mvc 4.3バージョンを使用しています。デフォルトであるspring csrfを使用しています。シナリオの1つでは、無効なトークンエラーが発生していますが、同じものがサーバーに送信されたものがあれば、トークンが表示されます。生成されたcsrfトークンを見るためにサーバの応答を見るためにログメッセージを置くことができる方法はありますか? UI JSPページでは、私はタグを使用していますし、ページビューのソースでトークンを見ることができました。しかし、私は私のページに他のトークンがないことを確認するために、サーバー側のフィルタを見たいと思っています。spring csrf tokenをフィルタに表示する方法

私のページには2つのタブがあります。私がタブを変えるたびに、私はこのトークンに無効な問題を出しています。カスタムフィルタでこのトークンの詳細にアクセスする方法を教えてください。

私はAOPをこのように変更する必要がありましたか?

@Aspect パブリッククラスAfterGenerateCsrfTockenAspect {

protected transient ITSLogger logger = LogManager.getLogger(this.getClass().getName()); 
@AfterReturning( 
     pointcut = "org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.generateToken(..)", 
     returning = "result" 
    ) 
    public void logGeneratedCsrfToken(Object result) { 
     logger.debug("CSRF token was generated. :::: " + result); 
    } 

}

答えて

0

デフォルトでは、スプリングはセッションでcsrfトークンを保存します。セッション属性からcsrfトークンにアクセスできます

String key ="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN" 
HttpSession session = request.getSession(true); 
CsrfToken token =(CsrfToken) session.getAttribute(key); 
0

私は

を発生させるCSRFトークンを参照するために、サーバーの応答を確認するメッセージをログに記録置くことができる方法はあります

はい、レスキューにAOP。たとえば、トークンを生成するたびにログに記録することができます。

@Aspect 
@Slf4j // lombok for logging 
public class AfterGenerateCsrfTockenAspect { 
    @AfterReturning(// use here FQDN of your Token generator method 
     pointcut = "org.springframework.security.web.csrf.CookieCsrfTokenRepository.generateToken(..)", 
     returning = "result" 
    ) 
    public void logGeneratedCsrfToken(Object result) { 
     log.info("CSRF token '{}' was generated.", result); 
    } 
} 
+0

こんにちはマクシム、私はAOPを新しくしました。私の春MVCの流れの中で上記のコードを保存する場所を教えていただけますか?このコードスニペットで何かを変更する必要がありますか? – Kiran

+0

質問セクションでAOPアプローチを試しましたが、データを取得できませんでした – Kiran

関連する問題