我们正在构建Java Web应用程序。我们在Wildfly 9.2中使用EJB容器和JPA。
现在我们要集成用户具有特定角色的权限系统,但此角色仅与特定实体一起授予。我将此访问资源部门命名为。
因此,我们将拥有存储在此类表中的用户的权限列表:
| User ID | Department | Role |
| ------- | ---------- | ------- |
| 1 | A | MANAGER |
| 1 | B | ADMIN |
| 2 | B | MANAGER |
此外,我们还有全球角色。如果上表中没有相关部门的条目,则用户具有一组全局角色。
| User ID | Role |
| ------- | ------- |
| 1 | VIEWER |
| 3 | MANAGER |
在给定部门的情况下,我们如何轻松检查用户是否处于某个角色?
只需使用注释@RolesAllowed,我们就可以检查某个角色,但不限于某个部门。
答案 0 :(得分:0)
请记住,企业Java安全角色是关于授权。
因此,您可以将部门建模为安全系统中的角色。为用户分配多个安全角色是完全可以的。
因此,给了B部门的经理:
@RolesAllowed({"manager", "B"}
public void someBusinessMethod(...) {
...
}
只有经理和部门B的用户授权才能调用此方法。
答案 1 :(得分:0)
结果证明EJB没有我们想要的功能。 我们迁移到Apache Shiro Security,对此感到非常满意。
始终必须以编程方式检查基于资源的权限。基于静态角色和权限的检查可以作为注释。