15.6.6. タイプセーフなパーミッションのアノテーション
Seam では
@Restrict に対する代替のアノテーションをいくつか提供しています。 異なる方法で任意の EL 式に対応し、 コンパイルタイムの安全性が向上します。
Seam には標準の CRUD ベースのパーミッション用にアノテーション一式が同梱されています。 次のアノテーションは
org.jboss.seam.annotations.security パッケージで提供されています。
- @Insert
- @Read
- @Update
- @Delete
これらのアノテーションを使用するためには、セキュリティチェックを行いたいメソッドやパラメータに配置します。メソッドに置く場合は、パーミッションがチェックされる対象クラスを指定します。 以下の例を見てください。
@Insert(Customer.class)
public void createCustomer() { ... }
@Insert(Customer.class)
public void createCustomer() { ... }
この例ではユーザーに対してパーミッションチェックが行われ、 新しい
Customer オブジェクトを作成するパーミッションを有していることを確認します。 パーミッションチェックの対象は Customer.class (実際の java.lang.Class インスタンス自体) となり、 操作はアノテーション名の小文字表記です。この例では insert です。
同様に以下のようにしてコンポーネントメソッドのパラメータにアノテーションを付与することができます。 これを行う場合には、 パラメータの値自体がパーミッションチェックの対象となるためパーミッションの対象を指定する必要はありません。
public void updateCustomer(@Update Customer customer) {
...
}
public void updateCustomer(@Update Customer customer) {
...
}
独自のセキュリティアノテーションを作成するためには、
@PermissionCheck アノテーションを付与するだけです。 例を示します。
デフォルトのパーミッション操作の名前 (アノテーション名の小文字版) を別の値で上書きしたい場合は、
@PermissionCheck アノテーション内にその値を指定することができます。
@PermissionCheck("upgrade")
@PermissionCheck("upgrade")