SAStruts が拡張性に乏しい?
ユースケース毎のクラスで各実行メソッド毎にURLが決まるので、共通処理が書けない。ログインチェック処理とか。(未ログインだったらどこかのページにリダイレクトするとか)ここらへんは拡張に乏しい。
2008-09-06
方法は色々あると思いますが、例えば、PreProcessor の role を処理している部分をオーバーライドすれば、なんとでもできる気がします。URL やパス、パラメーターで判断したり、それがあれな場合は、@LoginRedirect(action = "/hoge") アノテーションみたいなのを作ってアクションで明示的に指定するとか。でもアノテーションはメソッド呼び出しのように、直接処理を追えないので開発者はみんな嫌いですけど。たぶん。特に俺々アノテーションは。
関連することとして、前のプロジェクトでは AP サーバの BASIC 認証 (JDBC レルム) 機能を使用しましたが、下記の問題がありました。
- ログイン ID で検索し、結果をパスワードと照合するため、削除フラグなどが使えない
- 直接アクセスできないページは結局、自分で制御しなければならない
1 は AP サーバにより動きが異なるかもしれません。今考えると条件で絞ったビューにすれば良かっただけかもしれません。2 はどんなシステムでも機能遷移の途中にアクセスされては困るのであると思います。今回、新しいプロジェクトでまた SAStruts で開発中で、role 処理をオーバーライドして少しコードを追加して使っています。何かとらくちんです。@Execute アノテーションの roles 属性をここで参照し、適当に処理するようにしたと思います。