Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring中的角色与ACL_Java_Spring_Acl_Roles - Fatal编程技术网

Java spring中的角色与ACL

Java spring中的角色与ACL,java,spring,acl,roles,Java,Spring,Acl,Roles,问题是我应该使用具有对象作用域的角色还是只使用ACL 下面是一个用例,假设我希望用户对某个公司拥有CRUD权限,但对某个公司只有读取权限 现在我可以通过两种方式实现这一点 方法#1) 创建两个角色 1) 角色\管理:此角色中的用户将拥有任何公司的所有CRUD权限 2) 角色\支持:此角色中的用户仅具有类别(公司)级别e的读取权限 现在我可以说 UserA-->在CompanyA上具有角色\u ADMIN-- UserA-->在CompanyB上具有角色\u支持功能。 注意:这里我没有对该对象设置

问题是我应该使用具有对象作用域的角色还是只使用ACL

下面是一个用例,假设我希望用户对某个公司拥有CRUD权限,但对某个公司只有读取权限

现在我可以通过两种方式实现这一点

方法#1)

创建两个角色
1) 角色\管理:此角色中的用户将拥有任何公司的所有CRUD权限

2) 角色\支持:此角色中的用户仅具有类别(公司)级别e的读取权限

现在我可以说

UserA-->在CompanyA上具有角色\u ADMIN--
UserA-->在CompanyB上具有角色\u支持功能。
注意:这里我没有对该对象设置任何权限

方法#2) 只有一个角色[管理员],我可以说

UserA-->具有CRUD权限--在CompanyA上
UserA-->在CompanyB上具有R[读取]权限

我不知道哪种方法是首选的,为什么。在方法#2)中,我看不到角色的任何价值,因为权限是在对象上定义的。我认为唯一有意义的例子是CREATE。用户将无法预先知道是否允许创建,因为此时对象不存在。 在方法2中,我不需要任何多个角色。但这听起来并不正确

那么,既然我可以用方法1做同样的事情,为什么还要用方法2呢

希望收到你的来信

谢谢
Paul

角色和ACL有不同的用途

角色将限制在某些资源上,例如,您可以说UserA是否可以访问公司

使用ACL,您可以说UserA可以访问公司内部的CompanyA,但不能访问CompanyB

因此,角色的粒度不如ACL,但它们可以协同工作

回到您的案例中,您将需要ACL来限制UserA为CompanyA进行读操作,为CompanyB进行写操作,但需要角色来说明UserA可以访问company类型的资源。
这也将解决关于创建的另一个问题:因为UserA可以访问公司,所以他可以创建一个新的CompanyC,根据定义,ACL写访问将与CompanyC关联(因为他是创建者)。

角色和ACL有不同的用途

角色将限制在某些资源上,例如,您可以说UserA是否可以访问公司

使用ACL,您可以说UserA可以访问公司内部的CompanyA,但不能访问CompanyB

因此,角色的粒度不如ACL,但它们可以协同工作

回到您的案例中,您将需要ACL来限制UserA为CompanyA进行读操作,为CompanyB进行写操作,但需要角色来说明UserA可以访问company类型的资源。
这也将解决关于创建的另一个问题:因为UserA可以访问公司,所以他可以创建一个新的CompanyC,根据定义,ACL写访问将与CompanyC关联(因为他是创建者)。

角色和ACL有不同的用途

角色将限制在某些资源上,例如,您可以说UserA是否可以访问公司

使用ACL,您可以说UserA可以访问公司内部的CompanyA,但不能访问CompanyB

因此,角色的粒度不如ACL,但它们可以协同工作

回到您的案例中,您将需要ACL来限制UserA为CompanyA进行读操作,为CompanyB进行写操作,但需要角色来说明UserA可以访问company类型的资源。
这也将解决关于创建的另一个问题:因为UserA可以访问公司,所以他可以创建一个新的CompanyC,根据定义,ACL写访问将与CompanyC关联(因为他是创建者)。

角色和ACL有不同的用途

角色将限制在某些资源上,例如,您可以说UserA是否可以访问公司

使用ACL,您可以说UserA可以访问公司内部的CompanyA,但不能访问CompanyB

因此,角色的粒度不如ACL,但它们可以协同工作

回到您的案例中,您将需要ACL来限制UserA为CompanyA进行读操作,为CompanyB进行写操作,但需要角色来说明UserA可以访问company类型的资源。 这还将解决关于创建的另一个问题:因为UserA可以访问公司,所以他可以创建一个新的CompanyC,根据定义,ACL写访问将与CompanyC关联(因为他是创建者)