我尝试使用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));

07-26 03:55