【问题标题】:easiest way to configure 3 roles in spring security 4 / JPA / Hibernate在 spring security 4 / JPA / Hibernate 中配置 3 个角色的最简单方法
【发布时间】:2016-03-15 23:56:02
【问题描述】:

我已经为用户和管理员提供了 Spring Security。仅对经过身份验证的用户授予访问权限,某些页面仅对管理员允许。但这几乎是默认配置。

现在我想在 Spring Security 中添加第三个角色(我们将其命名为 crip)。这 3 个角色就像俄罗斯套娃:用户可以访问 3 个页面,crip 可以访问这些 3 个页面 + 2 个其他页面,管理员是超级用户,因此他可以访问所有内容。

在 hibernate/JPA 方面,对于在权限和用户表之间具有单对多关系的用户使用一组角色还是只使用一个角色更好?此角色将被定义为分层:Admin > crip > user。

如果定义角色是最好的方法,那么在spring security方面,我如何配置角色包含:Admin > crip > user?

我发现了用户和角色之间的@manytoone 和@manytomany 关系,这就是我问这个的原因。

【问题讨论】:

  • @M.Deinum。我已经阅读了一些关于 Spring Security 的文档和教程。我已经使用管理员和用户角色完成了默认/初始配置。但这只是禁止来自管理员以外的其他用户的某些页面。所以没有太多的配置要做。现在有了第三个角色,它似乎更复杂了,我发现的文档更少(顺便说一句似乎很正常)。

标签: java spring hibernate jpa spring-security


【解决方案1】:

从你的问题我理解,你已经有了基本的配置并且可以正常工作。

所以只需添加这个来拦截 url 列表

如果您想允许角色访问 - 管理员、crisp 或用户

<intercept-url pattern="/pagesForCrispAndAdminAndUser**" access="hasAnyAuthority('Admin', 'crisp', 'user')" />

只允许管理员

<intercept-url pattern="/pagesForAdmin**" access="hasAuthority('Admin')" />

允许管理员和用户

<intercept-url pattern="/pagesForAdminAndUser**" access="hasAnyAuthority('Admin', 'user')" />

文档here

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 2012-12-04
    • 2013-09-08
    • 1970-01-01
    • 2014-04-06
    • 2016-01-29
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多