【发布时间】:2019-06-29 04:09:57
【问题描述】:
我创建了CustomClaimType 来存储user id:
public static class CustomClaimTypes
{
public const string UserId = "UserId";
}
当用户登录时,我设置它:
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, doc_session.ufname + " " + doc_session.ulname));
claims.Add(new Claim(CustomClaimTypes.UserId, doc_session.isci_id.Value.ToString()));
ClaimsIdentity userIdentity = new ClaimsIdentity(claims,"Identity.Application");
ClaimsPrincipal principal = new ClaimsPrincipal(userIdentity);
我还创建了自定义身份扩展:
public static class IdentityExtensions
{
public static int GetUserId(this IIdentity identity)
{
ClaimsIdentity claimsIdentity = identity as ClaimsIdentity;
Claim claim = claimsIdentity?.FindFirst(CustomClaimTypes.UserId);
if (claim == null)
return 0;
return int.Parse(claim.Value);
}
public static string GetName(this IIdentity identity)
{
ClaimsIdentity claimsIdentity = identity as ClaimsIdentity;
Claim claim = claimsIdentity?.FindFirst(ClaimTypes.Name);
return claim?.Value ?? string.Empty;
}
}
但是当我调用 User.Identity.GetUserId(); 时,我得到 0 (null) 作为结果。
【问题讨论】:
标签: c# asp.net-core asp.net-core-mvc asp.net-identity