9

我需要訪問我的動作過濾器中當前登錄的用戶。身份由執行鏈上的DelegatingHandler進一步設置。WebApi ActionFilterAttribute,HttpActionContext訪問用戶名(IPrincipal)

可以訪問當前IPrincipal使用HttpContext.Current.User 到目前爲止,我避免使用HttpContext.Current,因爲它在我看來是不好的風格。 首先,你的代碼只有在IIS託管時才能工作,其次它包含了一個System.Web的引用,我認爲它不會造成傷害,但如果可能的話,我寧願堅持使用System.Net.Http它只是感覺錯誤依靠良好的舊「HttpContext

ActionFilter中有沒有其他方式可以訪問用戶的身份?或者如果您不打算運行自己託管的應用程序,是否可以使用HttpContext

+0

該死的..我真的真的在發佈問題之前徹底地搜查過。 5分鐘後,我有兩個工作的答案:( – lapsus 2013-03-11 09:28:42

回答

16

我忽略了顯而易見的。我沒有意識到ControllerContext內有一個Controller屬性。

var username = ((ApiController)context.ControllerContext.Controller).User.Identity.Name; 
+11

在Web API v2中'actionContext.RequestContext.Principal'會做到這一點。 – cleftheris 2014-02-06 16:16:27

相關問題