java - spring security - 动态角色

标签 java hibernate spring-security role


我的应用程序中有一个用户需要按类别公开某些数据。
例如:
具有 ROLE_CAMPAIGN 的用户 A 只能看到 WHERE campaign_category_id = 5
具有 ROLE_CAMPAIGN 的用户 b 只能看到 WHERE campaign_category_id IN(5,10,4)
(选择、插入、更新、删除)

User 和 Campaign 是 hibernate 实体。
他们的连接是多对多(用户有 CampaignsCategories )
如果我将其翻译成原生 SQL

SELECT * FROM CAMPAIGNS WHERE CATEGORY_ID IN (SELECT ID FROM USER_CATEGORIES)

等等。

为具有某种角色的用户实现动态的正确方法是什么。

小例子会有所帮助。

( Spring 安全3)

最佳答案

看起来您可以使用访问控制列表 (ACL) 来解决此问题:2 名员工拥有相同的 ROLE_EMPLOYEE 并且不能执行管理员可以执行的操作,但在该范围内他们不允许查看或删除每个别人的记录。
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/domain-acls.html应该会给你一个更好的主意。

关于java - spring security - 动态角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284102/

相关文章:

java - 返回字符串的方法数组

java - 如何使用 hibernate 映射 XML List<Entity> 字段

security - 自定义身份验证

spring - 我如何在 spring security acl 中检查我的对象权限而不是使用 hasPermission 注释

java - Asterisk -java。队列操作

java - 如何在 JSP 页面上包含来自另一台服务器的动态 JSP

java - 如何访问@EmbeddedId 的字段?

java - 我可以将 @Query 定义与 Spring Data JPA 存储库方法中的规范结合起来吗?

java - Spring Security手动登录最佳实践

java - 通过 Runtime.exec() 执行时命令失败,但在 Raspberry Pi (Linux) 上手动执行时命令有效