.net core 不寻常的函数定义-这里发生了什么
我在查看identity server 4文档时发现了这段代码.net core 不寻常的函数定义-这里发生了什么,.net-core,identityserver4,.net Core,Identityserver4,我在查看identity server 4文档时发现了这段代码 private (TestUser user, string provider, string providerUserId, IEnumerable<Claim> claims) FindUserFromExternalProvider(AuthenticateResult result) { var externalUser = result.Principal; // try to determi
private (TestUser user, string provider, string providerUserId, IEnumerable<Claim> claims) FindUserFromExternalProvider(AuthenticateResult result)
{
var externalUser = result.Principal;
// try to determine the unique id of the external user (issued by the provider)
// the most common claim type for that are the sub claim and the NameIdentifier
// depending on the external provider, some other claim type might be used
var userIdClaim = externalUser.FindFirst(JwtClaimTypes.Subject) ??
externalUser.FindFirst(ClaimTypes.NameIdentifier) ??
throw new Exception("Unknown userid");
// remove the user id claim so we don't include it as an extra claim if/when we provision the user
var claims = externalUser.Claims.ToList();
claims.Remove(userIdClaim);
var provider = result.Properties.Items["scheme"];
var providerUserId = userIdClaim.Value;
// find external user
var user = _users.FindByExternalProvider(provider, providerUserId);
return (user, provider, providerUserId, claims);
}
我不明白这里发生了什么事。这是什么类型的函数定义用法?您是指返回的数据吗?返回的是一个值元组,有关值元组的指南,请参见本文。值元组是一种在不创建自定义类的情况下返回多个参数的方法
该方法尝试在用户通过外部身份验证后在本地数据库中查找该用户。我现在看到了发生的情况。
var (user, provider, providerUserId, claims) = FindUserFromExternalProvider(result);