Wicketの公式ページのExamplesのauthenticationにある認証ではADMINという1つの権限を与えているが、RolesにはStringの配列を受け取るコンストラクタがあるので、複数の権限を与えられる。これを知る前はADMINという名前(定数にまでなってるし)だからUSER権限のページも見れるだろうと勝手に思っていたが、そうはいかなかった。ADMIN権限しか持っていないRolesだと以下のようなページを見ることができない
@AuthorizeInstantiation(Roles.USER) public class UserPage extends WebPage{ }
ADMINでもUSER権限のページを見るためにはUSER権限を持ってないといけないらしい。ということで以下のように両方の権限を持つRolesを作成すればADMIN権限のページもUSER権限のページも見れるようになった。
Roles roles = new Roles(new String[]{Roles.ADMIN, Roles.USER});
でも、ページ側でもいづれかの権限を持っていれば見れるように、複数の権限をアノテーションで指定できるので、複数の権限をRolesに与えるよりは、ページ側で設定した方がいい気がする。逆に全ての権限を持ってないと見れないとかできるのだろうか?
@AuthorizeInstantiation({Roles.ADMIN, Roles.USER}) public class UserPage extends WebPage{ }