15.6.6. タイプセーフなパーミッションのアノテーション


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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat