2017-02-09 45 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

感謝您的建議,但我們的部門是充滿活力的。所以我們不能將它們硬編碼到我們的註釋中。 –

相關問題