我们正在构建一个 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,我们可以检查某个角色,但不限于某个部门。
最佳答案
请记住,企业 Java 安全角色与授权有关。
因此,您也可以将该部门建模为安全系统中的角色。为一名用户分配多个安全角色是完全可以的。
因此,给定 B 部门的经理:
@RolesAllowed({"manager", "B"}
public void someBusinessMethod(...) {
...
}
只有B部门的经理用户才被授权调用该方法。
关于java - 如何仅将 EJB 角色授予某些实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42139720/