2014-07-02 45 views
1

我用瞭如下我的應用程序的角色授權,如何在EJB動態設置@RolesAllowed 3

**@RolesAllowed("Admin")** 
public class ExampleResource { 
// 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    **@RolesAllowed({"Admin", "User"})** 
    public Response getUsers(){ 
    } 
} 

授權工作正常時,登錄爲「管理/用戶」。同樣,我也應用了許多資源類的角色。

但我想處理@RolesAllowed動態設置,而不是將其定義爲聲明註釋。或者是否有其他方法來處理使用EJB3或Java ee安全性的角色授權?

請給出你的想法或範例來實現它。

感謝,

問候, 烏拜

回答

0

使用@Resource注入的EJBContext(或SessionContext),並調用isCallerInRole(字符串角色名),並拋出一個異常(或其他)如果返回false。這基本上是@RolesAllowed所涵蓋的內容。

+0

Hi @bKail,謝謝你的回覆。是的根據您的回覆,我嘗試使用SessionContext檢查角色isCallerInRole(String roleName)。但是我得到了一個異常:引發java.lang.IllegalStateException:沒有可用於角色引用Admin的映射。你能回答這是什麼原因嗎? –

+0

我不確定。這聽起來像是特定於供應商的例外情況。你是否可以通過'@ DeclareRoles'在其他地方聲明角色?也許用完整的堆棧跟蹤來更新你的描述? –