2017-02-09 62 views
1

我们正在构建Java Web应用程序。我们使用EJB容器和JPA与Wildfly 9.2。如何仅将EJB角色授予某些实体

现在我们想要整合一个用户具有特定角色的权限系统,但是这个角色只能与某个实体组合授予。我将命名这个访问资源部门。

因此,我们将有权限的列表存储在这样一个表中的用户:

| User ID | Department | Role | 
| ------- | ---------- | ------- | 
| 1  | A   | MANAGER | 
| 1  | B   | ADMIN | 
| 2  | B   | MANAGER | 

此外,我们有全球性的角色。用户具有一组全局角色,如果上述表中没有涉及有关部门的条目,则将应用该全局角色。

| User ID | Role | 
| ------- | ------- | 
| 1  | VIEWER | 
| 3  | MANAGER | 

我们如何轻松检查某个用户是否在特定角色下给予某个部门?

通过使用注释@RolesAllowed,我们可以检查某个角色,但不限于某个部门。

+0

过滤器如何?给定一个URL,是否知道哪个部门将被该URL访问?如果用户不在这些部门中,则拒绝该请求。无论解决方案是什么,当重组和部门改变时会发生什么? –

+0

或EJB层上可能的拦截器。 –

+0

谢谢你的建议。我们当然会研究这一点。 我们目前也在研究Apache Shiro。这可能会满足我们的要求。 –

回答

0

请记住,企业java安全角色大约是授权

因此,您可以将部门建模为安全系统中的角色。为用户分配多个安全角色是完全可以的。

因此,考虑到部门B经理:

@RolesAllowed({"manager", "B"} 
public void someBusinessMethod(...) { 
    ... 
} 

谁是经理和部门B是授权调用此方法只有用户。

+0

感谢您的建议,但我们的部门是充满活力的。所以我们不能将它们硬编码到我们的注释中。 –

相关问题