我曾尝试使用OACC框架
createResource(“USER”,“domain1”,“kim”)
USER :resourceClass
domain1 :域
kim :要存储的值(externalId)
很抱歉,如果参数订单不匹配
我再次呼吁:
createResource(“USER”,“domain2”,“kim”)
在这种情况下,系统冲突存储相同的名称,逻辑上是,externalId不能相同
但是我们如何将实际值存储到此中,正常的Resource实例化将导致其自己的ID。
如果我传入UserName,是否有“getRoles”的api?
多租户应用程序每个域都有(用户/角色/权限),1个用户可以存在多个域!!
答案 0 :(得分:1)
但是我们如何将真实值存储到此中,正常的Resource实例化将导致其自己的ID。
正如您所注意到的,createResource()
方法可以接受String externalId
参数,该参数必须是新资源的全局唯一字符串标识符。 "全球独一无二"这意味着所有域和资源类都是唯一的。
externalId
对于通过应用程序域中的标识引用OACC资源非常有用,无需使用或存储唯一的resourceId
OACC生成并从createResource()
返回。
将非唯一应用程序域标识符用作外部ID的一种方法是使用适当的分类器为标识符添加前缀,以使其在OACC中唯一。这样的前缀可以简单地由资源类,域或两者组成。要使用您的示例:
createResource("USER", "domain1", "user.domain1.kim");
createResource("USER", "domain2", "user.domain2.kim");
是否有任何api to" getRoles"如果我传入UserName?
在OACC中,您可以通过使用一个资源"继承"来模型角色分配。通过授予*INHERIT
权限,来自其他资源的所有权限。换句话说,OACC中没有显式角色概念,因此没有专门的方法来获取" getRoles"。
在任何情况下,授权的最佳做法是检查权限,而不是针对角色成员身份。
出于审计或管理目的,如果您确实需要查找特定用户从中继承权限的资源,OACC会提供查询方法,例如getResourcesByResourcePermissions()
。例如,如果你所有的角色"被建模为资源类ROLE
的资源,您可以通过以下调用找到您的用户继承的资源:
getResourcesByResourcePermissions(userResource,
"ROLE",
ResourcePermissions
.getInstance(ResourcePermissions.INHERIT));