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