CSRF対策のtokenInterceptorサンプル
かなり手こずったのでメモしておく。
これからも使うはず。
<action name="hoge-hoge" class="jp.co.hogehoge.action.HogeHogeAction"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="token"> <param name="excludeMethods">register</param> </interceptor-ref> <result name="invalid.token">/WEB-INF/content/common/Error.jsp</result> <result name="success">/WEB-INF/content/HogeHoge.jsp</result> <result name="input">/WEB-INF/content/HogeHoge.jsp</result> <result name="appExec" type="redirect">hoge-check</result> </action>
多分これでいけるはず。
何のことやらという感じだったので少しメモル。
・action nameでactionを指定して、tokenInterceptorを利用したいものを絞れる。action nameの書き方は小文字ハイフン。classにはしっかりと
・interceptor-refで利用するInterceptorを指定する。globalで指定していても、これで上書きされる可能性あり。注意。未検証
・interceptor-refはメソッドごとに指定できる。excludeMethodsは除外メソッド。何も書かなければすべてに適用
・tokenInterceptorの場合、invalid.tokenでtokenError時のページを指定
ついでにresultの例を書いておいた。基本はjspに飛ばすけど、最後のredirectのようにアクション側に飛ばすこともできる。
これらはstruts.xmlに記述すること。アクション側のannotationはまだ知らない。
最後にtokenInterceptorの場合、指定のformに
全部に言えることだが、actionの指定法には注意。小文字なのかで結構はまった。
もっと体系的にstruts2を学んでみたい