2012-11-26 58 views
0

我已經在Tomcat中爲我的Struts 2 Web應用程序實現了Active Directory身份驗證。我希望能夠在應用程序中使用登錄用戶的用戶名。我如何在行動中閱讀它?活動目錄auth Tomcat - 在操作中讀取用戶名?

+0

我得到它與Servlet上下文getRemoteUser()...工作和getUserPrincipal有什麼區別? – user1277546

+0

不要擔心,我發現這裏... http://stackoverflow.com/questions/8680843/httpservletrequest-getremoteuser-vs-httpservletrequest-getuserprincipal-getn – user1277546

+0

這樣做會使它更難以測試。爲什麼你不使用框架提供的抽象? –

回答

1

在Struts2有org.apache.struts2.interceptor.PrincipalAware接口,設置org.apache.struts2.interceptor.PrincipalProxy到你的行動。在你的動作中實現它,並使用這個對象來獲取用戶主體。使用PrincipalAware接口是獲取用戶主體的首選方式。來自javadoc:

此接口僅在Action用於servlet環境時纔有用。 通過使用此接口,您不會受限於servlet環境。

+0

「不與servlet環境綁定」是什麼意思? – user1277546

+0

@ user1277546準確地說,一旦在代碼中獲得了servlet規範工件,它可能變得更難以測試。從依賴關係抽象可以使測試更容易。 –

0

它不與Servlet上下文整合嗎?你應該能夠得到它:

ServletActionContext.getRequest().getUserPrincipal().getName();