2011-07-26 86 views
2

我正在用Metro和Tomcat的堆棧開發Java中的web服務,而我的問題在於用戶身份驗證。我瞭解Tomcat可以使用多個外部認證領域,例如JDBCRealm或JNDIRealm,我希望我的最終用戶爲他們各自的領域配置他們的Tomcat安裝。無論身份驗證領域如何獲取用戶名

現在,我需要在我的webservice-methods中使用用戶用來登錄的用戶名(或ID,唯一的東西),而不管具體領域如何。我在哪裏得到它?顯然我到目前爲止搜索了錯誤的關鍵詞 - 是否有我想使用的概念的特定名稱?

在此先感謝!

回答

2

已登錄的用戶可通過WebServiceContext#getUserPrincipal()返回Principal實例,該實例又具有getName()方法。

例如

@Resource 
private WebServiceContext context; 

@WebMethod 
public String hello() { 
    Principal user = context.getUserPrincipal(); 
    return (user != null) ? user.getName() : "(not logged in)"; 
} 

這是從HttpServletRequest#getUserPrincipal()順便得到的封面。

+0

非常感謝!這看起來完全是我所需要的。 – kobold

+0

不客氣。 – BalusC

相關問題