Class TokenUtil

java.lang.Object
nablarch.common.web.token.TokenUtil

public final class TokenUtil extends Object
トークンを使用した二重サブミットの防止機能のユーティリティ。 なお、トークンは ExecutionContext#getSessionScopeMap で獲得可能なMapではなく、 HttpSession に直接格納する。 これは、SessionConcurrentAccessHandler と併用した場合、トークンはリクエストスレッド毎の スナップショット上に保持されるので、本来エラーとなるタイミングでも並行実行されてしまう可能性 が発生するためである。
Author:
Kiyohito Itoh
  • Method Details

    • generateToken

      public static String generateToken(NablarchHttpServletRequestWrapper request)
      トークンを生成し、セッションスコープに設定する。
      トークンの生成は、リクエストスコープに対して一度だけ行い、リクエストスコープ内では一度生成したトークンを使いまわす。
      Parameters:
      request - リクエスト
      Returns:
      生成したトークン
    • getTokenGenerator

      public static TokenGenerator getTokenGenerator()
      TokenGeneratorをリポジトリから取得する。
      リポジトリに存在しない場合はRandomTokenGeneratorを使用する。
      Returns:
      TokenGenerator
    • isValidToken

      @Published(tag="architect") public static boolean isValidToken(HttpRequest request, ExecutionContext context) throws ClassCastException
      リクエストパラメータのトークンが有効であるかを判定する。 (注意) 本メソッドはVM単位での同期となる。 ただし、処理内容は軽微かつブロックするような箇所もないので、ボトルネックとなることは無い。
      Parameters:
      request - リクエスト
      context - コンテキスト
      Returns:
      トークンが有効な場合はtrue、有効でない場合はfalse
      Throws:
      ClassCastException - Webコンテナ外で本メソッドが実行された場合。