[英]ClaimsPrincipal does not work in ASP .Net core MVC web app
當用戶登錄我的應用程序時,我需要從聲明中獲取租戶 ID。 這完全適用於 ASP .Net 4.7 Mvc 應用程序。 但它在 asp .net core mvc app (3.1) 中不起作用。
var tenantId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
它不斷收到“對象引用未設置為對象的實例”這個錯誤。
對於 .Net Core 3.1 put,使用 System.IdentityModel.Tokens.Jwt;
對於控制器:
var token = HttpContext.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
var tokenClaims = new JwtSecurityToken(token.Replace("Bearer ", string.Empty));
var oid = tokenClaims.Payload["oid"].ToString();
對於 SignalRHub OnConnectedAsync():
var token = new JwtSecurityToken(Context.User.Identities.FirstOrDefault(x => x.IsAuthenticated).BootstrapContext.ToString());
var oid = token.Claims.FirstOrDefault(m => m.Type == "oid").Value;
ClaimsPrincipal.Current 未在 ASP.NET Core 中設置。 相反,它使用依賴注入來提供依賴,例如當前用戶的身份。
有幾個選項可用於檢索當前經過身份驗證的用戶的 ClaimsPrincipal:
您可以在文檔頁面上找到有關此主題的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.