Skip to content

Conversation

@terahide
Copy link
Contributor

@terahide terahide commented Dec 4, 2018

はじめに

  • 現状、POST時の二重サブミットのチェックはトークンを仕込んだ画面を表示するアクションとPOSTのアクションのURLが一致しないと想定どおりにチェックが働かない

このプルリクエストをマージすると

  • クラスやメソッドに二重サブミットのチェックを行わないことを明示的に指定できるようになります
  • クラスやメソッドにトークンを保持するキー名を明示的に指定できるようになります

使い方

@ExcludeCheckToken

二重サブミットのチェックを行わないことを明示的に指定する場合に使用します

e.g.

@Controller
@ExcludeCheckToken //クラスに指定した場合はそのコントローラのアクションすべてで二重サブミットのチェックを行わないようになります
public class HogeContoroller{
    @PostMapping("/new")
    @ExcludeCheckToken //メソッドに指定した場合はそのアクションで二重サブミットのチェックを行わないようになります

    public String save(HogeForm form){ /* snip */}
}

@ TokenKey

トークンを保持するキー名を明示的に指定する際に使用します

e.g.

@Controller
@TokenKey("hoge") //クラスに指定した場合はそのコントローラのアクションすべてでトークンを保持するキーとして利用されます
public class HogeContoroller{
    @GetMapping("/new/show")
    @TokenKey("fuga") //メソッドに指定した場合はそのアクションでトークンを保持するキーとして利用されます
                 //POSTするアクションとその画面のURLが異なる場合に利用します。キーの値は画面表示とPOSTのアクションで同じ値を指定してください
    public String showNew(){ /* snip */}

    @PostMapping("/new")
    @TokenKey("fuga") 
    public String save(HogeForm form){ /* snip */}
}

注意事項

  • キー名を指定した場合は、そのキーがセッション中にあることを保証します。(ない場合はトークンチェックのタイミングで例外が発生します)
  • 上記はチェックするアクションでセッションが新規になる場合は発生しません(その前にログインページに遷移すると思いますが念のため)
  • サンプルアプリのリファレンス実装として適切でない場合はそっとプルリクエストをクローズしてください

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants