クラス JdbcMutableAclService

java.lang.ObjectSE
org.springframework.security.acls.jdbc.JdbcAclService
org.springframework.security.acls.jdbc.JdbcMutableAclService
実装されたすべてのインターフェース:
AclServiceMutableAclService

public class JdbcMutableAclService extends JdbcAclService implements MutableAclService
MutableAclService の基本 JDBC 実装を提供します。

デフォルト設定は HSQLDB 用です。別のデータベースを使用している場合は、sidIdentityQuery プロパティと classIdentityQuery プロパティを適切に設定する必要があります。他のクエリ、SQL の挿入および更新も、スキーマのバリエーションに対応するようにカスタマイズできますが、デフォルトで期待される結果と一致する結果を生成する必要があります。

予想されるスキーマとその使用方法の詳細については、Spring Security リファレンスマニュアルの付録を参照してください。PostgreSQL の使用に関する情報も含まれています。

  • コンストラクターの詳細

  • メソッドの詳細

    • createAcl

      public MutableAcl createAcl(ObjectIdentity objectIdentity) throws AlreadyExistsException
      インターフェースからコピーされた説明: MutableAclService
      データベースに空の Acl オブジェクトを作成します。エントリはありません。返されたオブジェクトは、エントリを追加するために使用されます。
      次で指定:
      インターフェース MutableAclServicecreateAcl 
      パラメーター:
      objectIdentity - 作成するオブジェクト ID
      戻り値:
      ID が設定された ACL オブジェクト
      例外:
      AlreadyExistsException - 渡されたオブジェクト ID にすでにレコードがある場合
    • createEntries

      protected void createEntries(MutableAcl acl)
      渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。
      パラメーター:
      acl - 挿入する ACE を含む
    • createObjectIdentity

      protected void createObjectIdentity(ObjectIdentity object, Sid owner)
      渡された ObjectIdentity の acl_object_identity テーブルにエントリを作成します。acl_object_identity が sid 列を null 以外として定義しているため、Sid も必要です。
      パラメーター:
      object - acl_object_identity を表す
      owner - SID 列の場合 (この特定の Sid の acl_sid エントリがまだない場合に作成されます)
    • createOrRetrieveClassPrimaryKey

      protected LongSE createOrRetrieveClassPrimaryKey(StringSE type, boolean allowCreate, ClassSE idType)
      acl_class から主キーを取得し、必要に応じて新しい行を作成します。allowCreate プロパティは true です。
      パラメーター:
      type - エントリを検索または作成するには (多くの場合、完全修飾クラス名)
      allowCreate - 見つからない場合に作成が許可されている場合は true
      戻り値:
      主キーまたは見つからない場合は null
    • createOrRetrieveSidPrimaryKey

      protected LongSE createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate)
      acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合。
      パラメーター:
      sid - 検索または作成する
      allowCreate - 見つからない場合に作成が許可されている場合は true
      戻り値:
      主キーまたは見つからない場合は null
      例外:
      IllegalArgumentExceptionSE - Sid が認識された実装ではない場合。
    • createOrRetrieveSidPrimaryKey

      protected LongSE createOrRetrieveSidPrimaryKey(StringSE sidName, boolean sidIsPrincipal, boolean allowCreate)
      acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合。
      パラメーター:
      sidName - 検索または作成する Sid の名前
      sidIsPrincipal - それがユーザーであるか、ロールのような権限を付与されているかどうか
      allowCreate - 見つからない場合に作成が許可されている場合は true
      戻り値:
      主キーまたは見つからない場合は null
    • deleteAcl

      public void deleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren) throws ChildrenExistException
      インターフェースからコピーされた説明: MutableAclService
      指定されたエントリをデータベースから削除します。
      次で指定:
      インターフェース MutableAclServicedeleteAcl 
      パラメーター:
      objectIdentity - 削除するオブジェクト ID
      deleteChildren - 削除を子にカスケードするかどうか
      例外:
      ChildrenExistException - deleteChildren 引数が false であったが、子が存在する場合
    • deleteEntries

      protected void deleteEntries(LongSE oidPrimaryKey)
      提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。
      パラメーター:
      oidPrimaryKey - 削除する acl_entry の行
    • deleteObjectIdentity

      protected void deleteObjectIdentity(LongSE oidPrimaryKey)
      提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。

      そのクラスを使用しているクラスがなくなった場合でも、acl_class からエントリを削除することはありません。これはデッドロック回避アプローチです。

      パラメーター:
      oidPrimaryKey - acl_object_identity を削除します
    • retrieveObjectIdentityPrimaryKey

      protected LongSE retrieveObjectIdentityPrimaryKey(ObjectIdentity oid)
      渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。この実装の他のいくつかのメソッドとは異なり、このメソッドは行を作成しません(代わりに createObjectIdentity(ObjectIdentity, Sid) を使用してください)。
      パラメーター:
      oid - 見つけるには
      戻り値:
      オブジェクト ID、または見つからない場合は null
    • updateAcl

      public MutableAcl updateAcl(MutableAcl acl) throws NotFoundException
      この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。より包括的な実装では、ダーティ状態チェックを使用するか、MutableAcl の作成、更新、削除操作に ORM 機能を使用する可能性が高くなります。
      次で指定:
      インターフェース MutableAclServiceupdateAcl 
      パラメーター:
      acl - 変更する
      例外:
      NotFoundException - 関連するレコードが見つからなかった場合 (new キーワードでオブジェクトを作成するのではなく、MutableAclService.createAcl(ObjectIdentity) を使用してオブジェクトを作成することを覚えていますか? )
    • updateObjectIdentity

      protected void updateObjectIdentity(MutableAcl acl)
      渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。また、MutableAcl を所有する Sid に必要な場合は、acl_sid エントリを作成します。
      パラメーター:
      acl - 変更する (行は acl_object_identity にすでに存在している必要があります)
      例外:
      NotFoundException - 更新する ACL が見つからなかった場合。
    • setClassIdentityQuery

      public void setClassIdentityQuery(StringSE classIdentityQuery)
      acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。
      パラメーター:
      classIdentityQuery - クエリ。識別子を返す必要があります。デフォルトは call identity()
    • setSidIdentityQuery

      public void setSidIdentityQuery(StringSE sidIdentityQuery)
      acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。
      パラメーター:
      sidIdentityQuery - クエリ。識別子を返す必要があります。デフォルトは call identity()
    • setDeleteEntryByObjectIdentityForeignKeySql

      public void setDeleteEntryByObjectIdentityForeignKeySql(StringSE deleteEntryByObjectIdentityForeignKey)
    • setDeleteObjectIdentityByPrimaryKeySql

      public void setDeleteObjectIdentityByPrimaryKeySql(StringSE deleteObjectIdentityByPrimaryKey)
    • setInsertClassSql

      public void setInsertClassSql(StringSE insertClass)
    • setInsertEntrySql

      public void setInsertEntrySql(StringSE insertEntry)
    • setInsertObjectIdentitySql

      public void setInsertObjectIdentitySql(StringSE insertObjectIdentity)
    • setInsertSidSql

      public void setInsertSidSql(StringSE insertSid)
    • setClassPrimaryKeyQuery

      public void setClassPrimaryKeyQuery(StringSE selectClassPrimaryKey)
    • setObjectIdentityPrimaryKeyQuery

      public void setObjectIdentityPrimaryKeyQuery(StringSE selectObjectIdentityPrimaryKey)
    • setSidPrimaryKeyQuery

      public void setSidPrimaryKeyQuery(StringSE selectSidPrimaryKey)
    • setUpdateObjectIdentity

      public void setUpdateObjectIdentity(StringSE updateObjectIdentity)
    • setForeignKeysInDatabase

      public void setForeignKeysInDatabase(boolean foreignKeysInDatabase)
      パラメーター:
      foreignKeysInDatabase - false の場合、このクラスは追加の FK 制約チェックを実行し、デッドロックを引き起こす可能性があります (デフォルトは true であるため、デッドロックは回避されますが、データベースは FK を強制することが期待されます)
    • setAclClassIdSupported

      public void setAclClassIdSupported(boolean aclClassIdSupported)
      オーバーライド:
      クラス JdbcAclServicesetAclClassIdSupported 
    • setSecurityContextHolderStrategy

      public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
      使用する SecurityContextHolderStrategy を設定します。デフォルトのアクションは、SecurityContextHolder に格納されている SecurityContextHolderStrategy を使用することです。
      導入:
      5.8