3

acl_sidでPrincipleと同様にGratedAuthorityの両方を実行し、Spring aclセキュリティでオブジェクトにアクセス許可を与えることはできますか?

4

1 に答える 1

3

はい、できます。ACL_SIDテーブルは、ロールまたはユーザーのいずれかであるSIDを取ることができます。

これが役割である場合のサンプル挿入です:

insert into acl_sid (principal, sid) values (false, 'ROLE_ADMIN');

ユーザープリンシパルの場合、挿入は次のようになります。

insert into acl_sid (principal, sid) values (true, 'bob');

可変ACLを使用してACLフィールドの実行時操作を行うこともできます。

サンプルは次のとおりです。

// Prepare the information we'd like in our access control entry (ACE)
ObjectIdentity oi1 = new ObjectIdentityImpl(Foo.class, new Long(44));
ObjectIdentity oi2 = new ObjectIdentityImpl(Bar.class, new Long(44));
Sid user = new PrincipalSid("bob");
Sid adminRole = new GrantedAuthoritySid("ROLE_ADMIN");
Permission p1 = BasePermission.READ;
Permission p2 = BasePermission.ADMINISTRATION;

// Create or update the relevant ACL
MutableAcl acl1 = null;
MutableAcl acl2 = null;
try {
  acl1 = mutableAclService.readAclById(oi1);
} catch (NotFoundException nfe) {
  acl1 = mutableAclService.createAcl(oi1);
}

try {
  acl2 = mutableAclService.readAclById(oi2);
} catch (NotFoundException nfe) {
  acl2 = mutableAclService.createAcl(oi2);
}

// Now grant some permissions via an access control entry (ACE)
acl1.setOwner(user);
acl1.insertAce(0, p1, user, true);
aclService.updateAcl(acl1);
acl2.setOwner(adminRole);
acl2.insertAce(0, p2, adminRole, true);
aclService.updateAcl(acl2);
于 2012-06-28T03:11:32.087 に答える