2013-03-25 38 views
0

我已經通過使用IDispatchMessageInspector實現了WCF服務的自定義日誌記錄邏輯。訪問IDispatchMessageInspector中的用戶名

我通過使用AfterReceiveRequest和BeforeSendReply來記錄數據庫中的整個SOAP請求/響應。

我正在使用沒有任何問題的基於聲明的身份驗證。

但是,當我嘗試訪問Thread.CurrentPrincipal.Identity.Name或ClaimsPrincipal.Current.Identity.Name時,我總是得到空字符串(標識未設置,因此名稱爲空)。

有沒有辦法以任何方式從IDispatchMessageInspector訪問身份?

謝謝!

+0

你能在IDispatchMessageInspector中訪問它嗎? – rovsen 2014-03-17 15:36:08

回答

2

如果您的基於聲明的身份驗證正在運行,您可以將該用戶添加到您的聲明集。 您可以在一個靜態的方式訪問ClaimSet:

ReadOnlyCollection<ClaimSet> claimSets = ServiceSecurityContext.Current.AuthorizationContext;` 

另一種可能性是增加一個ServiceAuthorizationManager爲您服務,您的配置寄存器,並從這個類訪問ClaimSet。

希望這會有幫助

相關問題