java - 具有角色和权限的 Spring Security

标签 java spring-security

我正在尝试使用权限设置基于角色的安全性。我正在尝试与 Spring-Security 一起执行此操作。

我不想设置 ACL,因为这对我的要求来说似乎有点过头了。

我只想拥有本 article 中所述的简单权限和角色. 不幸的是,这篇文章没有描述如何实现给定的解决方案。

有人已经尝试过这个并且可以为我指出正确的方向吗?也许还有另一个描述实现的博客条目?

非常感谢。

最佳答案

我是相关文章的作者。

毫无疑问,有多种方法可以做到这一点,但我通常这样做的方法是实现一个了解角色和权限的自定义 UserDetailsRolePermission 只是您编写的自定义类。 (没什么特别的——Role 有一个名称和一组 Permission 实例,而 Permission 有一个名称。)然后 getAuthorities () 返回 GrantedAuthority 对象,如下所示:

PERM_CREATE_POSTPERM_UPDATE_POSTPERM_READ_POST

而不是返回类似的东西

ROLE_USER, ROLE_MODERATOR

如果您的 UserDetails 实现具有 getRoles() 方法,则角色仍然可用。 (我建议有一个。)

理想情况下,您将角色分配给用户,相关权限会自动填写。这将涉及拥有一个知道如何执行该映射的自定义 UserDetailsS​​ervice,它所要做的就是从数据库中获取映射。 (有关架构,请参阅文章。)

然后您可以根据权限而不是角色来定义您的授权规则。

希望对您有所帮助。

关于java - 具有角色和权限的 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357579/

相关文章:

java - 使用 Unsafe 写入和读取字符串

java - 如何从 ldap 服务器读取操作属性

java - Spring 数据蒙戈 |无法授权在没有字符串类型的情况下插入 system.indexes 文档

java - Spring MVC : custom error page for 404s without web. xml 文件

java - Android-无法解决java.lang.StringIndexOutOfBoundsException

java - 如果使用spring注入(inject)mapper,mybatis session 什么时候打开?

java - 无法访问javax.servlet.Filter;找不到javax.servlet.Filter的类文件

java - Spring isUserInRole 不使用 MySQL DB 中的角色

java - Spring Security中的多重身份验证管理器

jquery - Ajax 调用 HTTPS 失败