src/Web/WebMVC/Services/IdentityParser.cs

(完整代码) 2KB

namespace Microsoft.eShopOnContainers.WebMVC.Services;

public class IdentityParser : IIdentityParser<ApplicationUser>
{
    public ApplicationUser Parse(IPrincipal principal)
    {
        // Pattern matching 'is' expression
        // assigns "claims" if "principal" is a "ClaimsPrincipal"
        if (principal is ClaimsPrincipal claims)
        {
            return new ApplicationUser
            {

                CardHolderName = claims.Claims.FirstOrDefault(x => x.Type == "card_holder")?.Value ?? "",
                CardNumber = claims.Claims.FirstOrDefault(x => x.Type == "card_number")?.Value ?? "",
                Expiration = claims.Claims.FirstOrDefault(x => x.Type == "card_expiration")?.Value ?? "",
                CardType = int.Parse(claims.Claims.FirstOrDefault(x => x.Type == "missing")?.Value ?? "0"),
                City = claims.Claims.FirstOrDefault(x => x.Type == "address_city")?.Value ?? "",
                Country = claims.Claims.FirstOrDefault(x => x.Type == "address_country")?.Value ?? "",
                Email = claims.Claims.FirstOrDefault(x => x.Type == "email")?.Value ?? "",
                Id = claims.Claims.FirstOrDefault(x => x.Type == "sub")?.Value ?? "",
                LastName = claims.Claims.FirstOrDefault(x => x.Type == "last_name")?.Value ?? "",
                Name = claims.Claims.FirstOrDefault(x => x.Type == "name")?.Value ?? "",
                PhoneNumber = claims.Claims.FirstOrDefault(x => x.Type == "phone_number")?.Value ?? "",
                SecurityNumber = claims.Claims.FirstOrDefault(x => x.Type == "card_security_number")?.Value ?? "",
                State = claims.Claims.FirstOrDefault(x => x.Type == "address_state")?.Value ?? "",
                Street = claims.Claims.FirstOrDefault(x => x.Type == "address_street")?.Value ?? "",
                ZipCode = claims.Claims.FirstOrDefault(x => x.Type == "address_zip_code")?.Value ?? ""
            };
        }
        throw new ArgumentException(message: "The principal must be a ClaimsPrincipal", paramName: nameof(principal));
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。