Strutsのロール設定
Strutsの各アクションを実行する権限がログインユーザにあるのかどうかを検証する仕組みを調査してみた(仕事で使うから)。
- struts-config.xmlのactionタグにroles属性が存在
(struts-configのDTDから発見)* Struts1.2から,roles属性にワイルドカードが使える。
(「 Strutsユーザのための、Struts1.2ことはじめ」 by 豆蔵)* Servlet/JSP標準搭載の認証の仕組みだと,一旦ログインしたら,ログアウトするまで,そのユーザの属性が変わっても即反映はされない。
(「 Strutsで認証は?」 by toyofuku blog)
3つ目の「即反映されない」についてお客さんに「それじゃダメ」って言われちゃうと,認証の仕組みを自作しなくちゃいけなくなりそうだ。でも,それさえクリアできれば,Spring AOP使って認証処理を作成しようとしてたけど,どうやら自作しなくて済みそう。
あ,roles属性に書かれたロール以外のユーザが該当アクションを実行しようとしたらどうなるんだろう・・・。ググってもヒットしないので,Struts1.2.4のソースを読むことに。RequestProcesser.javaの869行目に発見。なるほど,「403 FORBIDDEN」になるわけね。