2015-07-12 50 views
0

在asp.net vnext,我使用下面的代碼獲得在控制器中的用戶聲明:獲取一類asp.vnext BETA4用戶聲明

var claimsIdentity = User.Identity as ClaimsIdentity; 
     var c = claimsIdentity.FindFirst(ClaimTypes.Name); 
     var temp = c.Value.ToString(); 

,但使用相同的,我不能讓它在我的課程(它曾經存儲在數據庫中)。我得到以下錯誤(用戶)

The name 'User' does not exist in the current context 

我試過Thread.CurrentPrincipal沒有成功。任何幫助?

回答

1

通常您將從當前HttpContext獲得對用戶的訪問權限。

你的類可以在它的構造函數中聲明一個依賴於Microsoft.AspNet.Hosting.IHttpContextAccessor的方法來獲得一個依賴注入傳入的方法。 然後你就可以得到這樣的:

ClaimsPrincipal user = httpContextAccessor.HttpContext.User; 
+0

所以,我有兩個控制器,以及在我班上宣佈這個httpcontextAccessor ..右...如果我在課堂上使用的FromServices如下它給?錯誤「對象引用未設置...」代碼:[FromServices] public IHttpContextAccessor _accessor {get;組; } – Karthick

+0

您的控制器已經有權訪問HttpContext,因此您不需要將IHttpContextAccessor的依賴項添加到您的控制器。我建議使它成爲一個構造函數依賴不從服務定位器得到它,我沒有嘗試過使用它從服務定位器,但在我的代碼它從構造函數注入 –