java - 如何仅将 EJB 角色授予某些实体

标签 java permissions ejb roles user-roles

我们正在构建一个 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/

相关文章:

java - 我可以阻止接口(interface)的实现吗?

postgresql - Postgres。如何为新表自动授予 SELECT 权限?

java - 如何将测试包添加到现有的 ejb 项目中?

Java嵌套泛型类型

java - 编写这个函数的更好方法是什么?

java - 关于简单java类中的依赖注入(inject)原理

Linux更改组权限以匹配所有者权限

node.js - Node-acl 方法 "isAllowed"总是意外返回 false

serialization - @ViewScoped @ManagedBean中的@EJB导致java.io.NotSerializableException

java - 在 EJB 中使用 @Timeout 代替 Thread.sleep()