- - PR -
画面遷移とアクセス制御の方法
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-03 01:02
こんばんは、POTETOです。
フレームワークとしてStruts1.1を利用しています。 URLの直接入力を許さない処理の記述方法について質問です。 ありうる画面遷移をXMLファイルなどに設定しておき、 画面表示のJSP(HTML)にHIDDENで画面IDを持たせて、 RequestProcessor#processPreprocess()かRequestProcessor#processRoles()を 拡張して、セッションに保存した画面IDとrequestのURL(Actionパス)を XMLに設定した定義と比較して正規の画面遷移か不正な画面遷移かを 判断しようかと思っています。 これだとアクションが増える度にXMLを修正する必要があります。 皆さんは、画面遷移制御(アクセス制御)をどのように行っていますか? ご教授の程宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2004-01-03 09:46
URLの直接入力を防ぐならTransactionToken機能を使用すれば十分ふせげるかと思います。
すべてのActionの共通処理としてTokenチェックをすればいいと思います。 (ActionServletのprocessPreprocessでもよいのかもしれませんが。) 的はずしてます? | ||||||||||||
|
投稿日時: 2004-01-03 23:20
僕は、画面遷移の制御などの情報はstruts-configで一元管理するべきだと考えています。
なので、org.apache.struts.action.ActionMappingを拡張したカスタムクラスを 使用することで、struts-configのaction要素内に直接書き込めるようにしています。
このようにした上で、共通のActionクラスを作り、そこでパスの検証を行なっています。 その部分は、以下のようにすれば良いと思います。
こんな感じでどうでしょうか? [ メッセージ編集済み 編集者: Emacs信者 編集日時 2004-01-03 23:25 ] | ||||||||||||
|
投稿日時: 2004-01-05 19:41
Clapさん、Emacs信者さん
返信ありがとうございます。 確かにTransactionTokenは2重submitも回避できて良いのですが、 2重submit時に、いきなりエラーページへ遷移し、 1回目のsubmitが正常に終了しているのかどうかが分からないので 使うのを止めていました。 また、ActionMappingの拡張は思いつきませんでした。 いろいろ方法があると勉強になりました。 | ||||||||||||
1
