6.3.5. UseTokenインターセプター

二重サブミット(同一リクエストの二重送信)防止 のためのトークン発行を行うインターセプター。

このインターセプターが使用されることを想定しているのは、主にJSP以外のテンプレートエンジンを採用している場合である。

JSP以外のテンプレートエンジンでは、このインターセプターの使用に加えてテンプレートでトークンを明示的にhiddenへ埋め込む必要がある。 トークンの埋め込み方は後述する。 なお、JSPを使用している場合は formタグ のuseToken属性でトークン生成とhiddenへの埋め込みが行われる。

トークンをチェックするため後続のアクションに対して OnDoubleSubmissionインターセプター を設定する必要がある。

6.3.5.2. モジュール一覧

<dependency>
  <groupId>com.nablarch.framework</groupId>
  <artifactId>nablarch-fw-web-tag</artifactId>
</dependency>

6.3.5.3. UseTokenを使用する

UseToken アノテーションを、 アクションのメソッドに対して設定する。

@UseToken
public HttpResponse confirm(HttpRequest req, ExecutionContext ctx) {
    // 省略
}

また、入力フォームへ明示的にトークンを埋め込む必要がある。

Thymeleafでの実装例
<form th:action="@{/path/to/action}" method="post">
  <input type="hidden" name="nablarch_token" th:value="${nablarch_request_token}" />

この例のようにname属性は”nablarch_token”と設定して、value属性はリクエストスコープから”nablarch_request_token”というキーで取得した値を設定する必要がある。 このname属性とリクエストスコープから値を取得するキーは変更できる。 詳しくは サーバ側の二重サブミット防止 を参照すること。