【发布时间】:2017-06-27 15:23:00
【问题描述】:
我们正在构建一个 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,我们可以检查某个角色,但不限于部门。
【问题讨论】:
-
过滤器怎么样?给定一个 URL,是否知道该 URL 将访问哪个部门?如果用户不在这些部门,则拒绝该请求。无论解决方案如何,当重组和部门发生变化时会发生什么?
-
或者可能是 EJB 层上的拦截器。
-
感谢您的建议。我们当然对此进行了调查。我们目前也在研究 Apache Shiro。这可能满足我们的要求。
标签: java permissions ejb roles user-roles