【緊急】使用 ClaimsIdentity 進行存盤用戶資訊,獲取到的物件為空
代碼如下: 登錄時把用戶的 token 和帳號存入
public void SignIn(string token, string name)
{
ClaimsIdentity claimsIdentity = new ClaimsIdentity(CookieUsrAuthInfo.AuthenticationScheme);
claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, token));
claimsIdentity.AddClaim(new Claim(ClaimTypes.Name, name));
ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
_httpContextAccessor.HttpContext.SignInAsync(CookieUsrAuthInfo.AuthenticationScheme, claimsPrincipal);
}
這個時候通過 GetCurrentUser() 方法來獲取 Principal 得值
public SysUserAccount GetCurrentUser()
{
var result = _httpContextAccessor.HttpContext.AuthenticateAsync(CookieUsrAuthInfo.AuthenticationScheme).Result;
var token = result.Principal.FindFirstValue(ClaimTypes.Sid);
return _sysUserAccountService.GetLogged(token);
}
Action 的獲取:
var getUsr = _userAuthService.GetCurrentUser();
跑代碼進行除錯的時候發現存入的時候沒報錯,但進行 result.Principal.FindFirstValue(ClaimTypes.Sid); 獲取時,Principal 為空
Startup.cs 配置都有配置了,百思不得其解
Startup.cs 配置:

uj5u.com熱心網友回復:
補充下報錯資訊
uj5u.com熱心網友回復:
保存時寫到ClaimTypes.NameIdentifier這里了,讀取時從ClaimTypes.Sid讀取,所以會為null。
保持前后一致即可解決問題:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/19496.html
標籤:C#
