Wicketユーザ認証(3)

Wicket 認証ページ作成のつづき、3回目

ログイン後の各画面、WebPage 継承クラスの宣言にアノテーション
@AuthorizeInstantiation でロール名を指定して、記述したロールだけが
アクセス可能となり表示する。

ログインできてもロール名が一致しない場合は、AuthenticatedWebApplication 継承して
作成したクラスで、オーバーライドで記述する onUnauthorizedPage が実行される。
そこで、RestartResponseAtInterceptPageException でエラーページクラスを指定して
スローしていれば、指定したエラーページに遷移する

---------------- AuthenticatedWebApplication -----------------
   @Override
   public void onUnauthorizedPage(Page page){
      throw new RestartResponseAtInterceptPageException(ErrorPage.class);
   }

---------------------------------------------------------------

ログイン後の画面Pageクラス

import org.apache.wicket.authorization.strategies.role.Roles;
import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@AuthorizeInstantiation({Roles.ADMIN,Roles.USER,RolesX.GUEST})
public class IndexPage extends BaseWebPage{
   public IndexPage(){
       //
   }
}

ロール名は、Wicket で標準で既に2つ存在する。

org.apache.wicket.authorization.strategies.role.Roles クラスで
final static String で宣言されており文字通りの意味で解釈して良いだろう
  Roles.ADMIN
  Roles.USER

これ以外は、自分で定義して使用するしかない。
AuthorizeInstantiation で Roles.ADMIN  USER 以外を書いても良い。
3分岐するような画面構成を仕様にするのもどうかと思うが。。。