【问题标题】:Spring Security one role different permissionsSpring Security 一角色不同权限
【发布时间】:2014-02-21 16:19:45
【问题描述】:

我在我的项目中使用 Spring-Security。我对此有疑问,因为我的 IS 中有 3 个角色。用户、管理员、管理员。在我的系统中有很多房间,每个房间都有一个经理。但是经理只能管理他自己的房间。最好的方法是什么?现在我只有基本的安全经理可以管理所有房间。但这仅适用于管理员。我的问题是什么是最好和最快的方法? (因为这个解决方案似乎有点庞大)

在控制器中使用角色和权限

@PreAuthorize("hasRole('ROLE_FORUM_MANAGER') and hasPermission(#forum,'update'))
and domain ACL

和域 ACL

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/domain-acls.html

还是别的什么?

我问的是最简单和最快的方法。

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    这是使用基于 ACL 的解决方案最常见的情况,因为权限只能根据所使用的域对象来确定。

    要在 Acl 中执行此操作,首先为每个房间创建一个 Acl。然后每个用户作为 SID 表中主体类型的安全身份。然后通过创建将房间 ACL 链接到用户 SID 的 ACE(访问控制条目)授予每个用户对其房间的访问权限。

    基于角色的身份验证 (RBAC) 在这里不适用,因为它不允许根据用户和域对象之间的关系提供细粒度的权限。

    可以将 RBAC hasRole 与 Acl hasPermission(#forum,'update') 结合使用,但由于我们已经使用 Acl,最好只使用 Acl,以便仅推送对数据的权限访问。

    如果稍后我们改变关于谁访问给定房间的想法,则不会影响代码,只会影响安全参考数据。

    【讨论】:

    • 感谢您的回答,我会研究link,但是您的回答方式似乎很清楚。
    猜你喜欢
    • 2018-12-30
    • 2011-09-15
    • 2011-12-24
    • 2022-08-09
    • 2014-10-19
    • 2020-12-18
    • 2012-10-24
    • 2017-12-30
    • 2013-08-26
    相关资源
    最近更新 更多