クラス JdbcMutableAclService
java.lang.ObjectSE
org.springframework.security.acls.jdbc.JdbcAclService
org.springframework.security.acls.jdbc.JdbcMutableAclService
- 実装されたすべてのインターフェース:
AclService
,MutableAclService
MutableAclService
の基本 JDBC 実装を提供します。 デフォルト設定は HSQLDB 用です。別のデータベースを使用している場合は、sidIdentityQuery
プロパティと classIdentityQuery
プロパティを適切に設定する必要があります。他のクエリ、SQL の挿入および更新も、スキーマのバリエーションに対応するようにカスタマイズできますが、デフォルトで期待される結果と一致する結果を生成する必要があります。
予想されるスキーマとその使用方法の詳細については、Spring Security リファレンスマニュアルの付録を参照してください。PostgreSQL の使用に関する情報も含まれています。
フィールドのサマリー
クラス org.springframework.security.acls.jdbc.JdbcAclService から継承されたフィールド
jdbcOperations, log
コンストラクターの概要
コンストラクターコンストラクター説明JdbcMutableAclService
(DataSourceSE dataSource, LookupStrategy lookupStrategy, AclCache aclCache) メソッドのサマリー
修飾子と型メソッド説明createAcl
(ObjectIdentity objectIdentity) データベースに空のAcl
オブジェクトを作成します。protected void
createEntries
(MutableAcl acl) 渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。protected void
createObjectIdentity
(ObjectIdentity object, Sid owner) 渡された ObjectIdentity の acl_object_identity テーブルにエントリを作成します。protected LongSE
createOrRetrieveClassPrimaryKey
(StringSE type, boolean allowCreate, ClassSE idType) acl_class
から主キーを取得し、必要に応じて新しい行を作成します。allowCreate
プロパティはtrue
です。protected LongSE
createOrRetrieveSidPrimaryKey
(StringSE sidName, boolean sidIsPrincipal, boolean allowCreate) acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。protected LongSE
createOrRetrieveSidPrimaryKey
(Sid sid, boolean allowCreate) acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。void
deleteAcl
(ObjectIdentity objectIdentity, boolean deleteChildren) 指定されたエントリをデータベースから削除します。protected void
deleteEntries
(LongSE oidPrimaryKey) 提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。protected void
deleteObjectIdentity
(LongSE oidPrimaryKey) 提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。protected LongSE
渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。void
setAclClassIdSupported
(boolean aclClassIdSupported) void
setClassIdentityQuery
(StringSE classIdentityQuery) acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。void
setClassPrimaryKeyQuery
(StringSE selectClassPrimaryKey) void
setDeleteEntryByObjectIdentityForeignKeySql
(StringSE deleteEntryByObjectIdentityForeignKey) void
setDeleteObjectIdentityByPrimaryKeySql
(StringSE deleteObjectIdentityByPrimaryKey) void
setForeignKeysInDatabase
(boolean foreignKeysInDatabase) void
setInsertClassSql
(StringSE insertClass) void
setInsertEntrySql
(StringSE insertEntry) void
setInsertObjectIdentitySql
(StringSE insertObjectIdentity) void
setInsertSidSql
(StringSE insertSid) void
setObjectIdentityPrimaryKeyQuery
(StringSE selectObjectIdentityPrimaryKey) void
setSecurityContextHolderStrategy
(SecurityContextHolderStrategy securityContextHolderStrategy) 使用するSecurityContextHolderStrategy
を設定します。void
setSidIdentityQuery
(StringSE sidIdentityQuery) acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。void
setSidPrimaryKeyQuery
(StringSE selectSidPrimaryKey) void
setUpdateObjectIdentity
(StringSE updateObjectIdentity) updateAcl
(MutableAcl acl) この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。protected void
渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。クラス org.springframework.security.acls.jdbc.JdbcAclService から継承されたメソッド
findChildren, isAclClassIdSupported, readAclById, readAclById, readAclsById, readAclsById, setConversionService, setFindChildrenQuery, setObjectIdentityGenerator
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.security.acls.model.AclService から継承されたメソッド
findChildren, readAclById, readAclById, readAclsById, readAclsById
コンストラクターの詳細
JdbcMutableAclService
public JdbcMutableAclService(DataSourceSE dataSource, LookupStrategy lookupStrategy, AclCache aclCache)
メソッドの詳細
createAcl
インターフェースからコピーされた説明:MutableAclService
データベースに空のAcl
オブジェクトを作成します。エントリはありません。返されたオブジェクトは、エントリを追加するために使用されます。- 次で指定:
- インターフェース
MutableAclService
のcreateAcl
- パラメーター:
objectIdentity
- 作成するオブジェクト ID- 戻り値:
- ID が設定された ACL オブジェクト
- 例外:
AlreadyExistsException
- 渡されたオブジェクト ID にすでにレコードがある場合
createEntries
渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。- パラメーター:
acl
- 挿入する ACE を含む
createObjectIdentity
渡された 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
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
指定されたエントリをデータベースから削除します。- 次で指定:
- インターフェース
MutableAclService
のdeleteAcl
- パラメーター:
objectIdentity
- 削除するオブジェクト IDdeleteChildren
- 削除を子にカスケードするかどうか- 例外:
ChildrenExistException
- deleteChildren 引数がfalse
であったが子が存在する場合
deleteEntries
提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。- パラメーター:
oidPrimaryKey
- 削除する acl_entry の行
deleteObjectIdentity
提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。そのクラスを使用しているクラスがなくなった場合でも、acl_class からエントリを削除することはありません。これはデッドロック回避アプローチです。
- パラメーター:
oidPrimaryKey
- acl_object_identity を削除します
retrieveObjectIdentityPrimaryKey
渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。この実装の他のいくつかのメソッドとは異なり、このメソッドは行を作成しません(代わりにcreateObjectIdentity(ObjectIdentity, Sid)
を使用してください)。- パラメーター:
oid
- 見つけるには- 戻り値:
- オブジェクト ID、または見つからない場合は null
updateAcl
この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。より包括的な実装では、ダーティ状態チェックを使用するか、MutableAcl
の作成、更新、削除操作に ORM 機能を使用する可能性が高くなります。- 次で指定:
- インターフェース
MutableAclService
のupdateAcl
- パラメーター:
acl
- 変更する- 例外:
NotFoundException
- 関連するレコードが見つからなかった場合 (new
キーワードでオブジェクトを作成するのではなく、MutableAclService.createAcl(ObjectIdentity)
を使用してオブジェクトを作成することを覚えていますか? )
updateObjectIdentity
渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。また、MutableAcl を所有する Sid に必要な場合は、acl_sid エントリを作成します。- パラメーター:
acl
- 変更する (行は acl_object_identity にすでに存在している必要があります)- 例外:
NotFoundException
- 更新する ACL が見つからなかった場合。
setClassIdentityQuery
acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。- パラメーター:
classIdentityQuery
- クエリ。識別子を返す必要があります。デフォルトは call identity()
setSidIdentityQuery
acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。- パラメーター:
sidIdentityQuery
- クエリ。識別子を返す必要があります。デフォルトは call identity()
setDeleteEntryByObjectIdentityForeignKeySql
public void setDeleteEntryByObjectIdentityForeignKeySql(StringSE deleteEntryByObjectIdentityForeignKey) setDeleteObjectIdentityByPrimaryKeySql
setInsertClassSql
setInsertEntrySql
setInsertObjectIdentitySql
setInsertSidSql
setClassPrimaryKeyQuery
setObjectIdentityPrimaryKeyQuery
setSidPrimaryKeyQuery
setUpdateObjectIdentity
setForeignKeysInDatabase
public void setForeignKeysInDatabase(boolean foreignKeysInDatabase) - パラメーター:
foreignKeysInDatabase
- false の場合、このクラスは追加の FK 制約チェックを実行し、デッドロックを引き起こす可能性があります (デフォルトは true であるため、デッドロックは回避されますが、データベースは FK を強制することが期待されます)
setAclClassIdSupported
public void setAclClassIdSupported(boolean aclClassIdSupported) - オーバーライド:
- クラス
JdbcAclService
のsetAclClassIdSupported
setSecurityContextHolderStrategy
public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy) 使用するSecurityContextHolderStrategy
を設定します。デフォルトのアクションは、SecurityContextHolder
に格納されているSecurityContextHolderStrategy
を使用することです。- 導入:
- 5.8