我将项目从 .NET 7 升级到 .NET 8。我知道声明存在重大变化。
在 .NET 7 中我曾经这样做过:
return auth?.User?.Claims?.SingleOrDefault(x => x.Type == "email")?.Value;
在.NET 8中,看起来我需要做:
return auth?.User?.Claims?.SingleOrDefault(x => x.Type == @"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")?.Value;
有更好的方法来检索电子邮件索赔吗?
System.Security.Claims
命名空间包含一堆可以用于此目的的常量。例如:
using System.Security.Claims;
...
return auth?.User?.Claims?
.SingleOrDefault(x => x.Type == ClaimTypes.Email)?.Value;