Name
Password

権限チェック

  • 2009-03-13 17:30:15

Pageコンポーネントのアクション呼び出しの際に現在のログインユーザがアクションを呼び出すための権限を持つかどうかを検証することができます。この処理を「権限チェック」と呼びます。Ymirでは権限チェックは「制約チェック」の一種です(他の制約チェックの種類としては「バリデーション」があります)。

権限チェックの指定

権限チェックを指定するにはアノテーションを用います。詳細については「制約の指定」を参照して下さい。

処理の詳細

権限チェックはPageコンポーネントへの依存コンポーネントやリクエストパラメータがセットされた後、アクション呼び出しの前に行なわれます。権限チェックに失敗すると、アクションを呼び出す代わりに以下の処理が行なわれます。

  1. バリデーション失敗に関する詳細情報であるorg.seasar.ymir.message.Notesオブジェクトがセットされたorg.seasar.ymir.constraint.PermissionDeniedExceptionがスローされる。
  2. Pageコンポーネントが@PermissionDeniedアノテーションの付与されたハンドラメソッドを持っている場合、1.で生成されたExceptionはキャッチされ、それを引数としてこのメソッドが呼び出される。なければExceptionはそのままスローされる。
  3. Pageコンポーネントが@permissionDeniedアノテーションの付与されたメソッドを持っていてかつそのメソッド呼び出し中に例外がスローされなかった場合は_prerenderメソッドが呼び出される。

ハンドラメソッドが引数を持つ場合は引数が解決されます。この時PermissionDeniedExceptionオブジェクトがデフォルトの引数値として使用されます。メソッドの引数の解決については「アクションメソッドの引数値の解決」を参照して下さい。

権限チェックの種類

Ymirが標準で提供している権限チェック用アノテーションはありません。アプリケーション毎に作成する必要があります。

(作成の方法については未記述です。すいません。)