我目前有一些Web應用程序可以訪問在JBoss 5.0中運行的通用服務。該服務非常簡單,使用Guice和POJO。 Web應用程序經過身份驗證,並知道用戶是誰以及他們擁有什麼角色。在調用服務時,我應該如何將此身份驗證信息傳遞給服務?我應該如何在Java中的應用程序層之間傳遞主題/主體/角色?
看起來簡單的方法是簡單地向接口添加一個參數來獲取用戶信息。可能是一個主題。但是,這有一個不利的地方,就是手邊沒有特定的上下文信息。
void doSomething(Subject subject, ...) {
}
我所看到的另一種方法是使用ThreadLocal的存儲,調用前把用戶信息在那裏,並通過該服務可以使用一些工具類,這個訪問。這清除了界面,但隱藏了服務的客戶端在進行呼叫之前必須設置用戶信息的事實。
是否有另一種方法呢?我感覺AOP可能在這裏也有用,但看不出如何。我錯過了一些「最佳做法」嗎? EJB會提供幫助嗎?
因爲我已經遇到[阿帕奇四郎(http://shiro.apache.org),它解決了這個問題。不知道如何,但它做到了。 – pauli 2012-05-14 09:16:45