C# 外部登录后从数据库获取AspNetUsers(CurrentUser)

C# 外部登录后从数据库获取AspNetUsers(CurrentUser),c#,asp.net-core-mvc,C#,Asp.net Core Mvc,在steam用户使用OpenID登录后,我正在尝试获取他的头像。 但我不知道如何在登录后立即检索数据库用户(手动将avater添加到数据库) 我向应用程序用户添加了新属性: // Add profile data for application users by adding properties to the ApplicationUser class public class ApplicationUser : IdentityUser { public string AvatarP

在steam用户使用OpenID登录后,我正在尝试获取他的头像。 但我不知道如何在登录后立即检索数据库用户(手动将avater添加到数据库)

我向应用程序用户添加了新属性:

// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
    public string AvatarPath { get; set; }
}
我创建了一个新的迁移并更新了数据库。我试图在登录后立即更改用户的数据,但如何检索当前用户

会计控制员:

// Sign in the user with this external login provider if the user already has a login.
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
if (result.Succeeded)
{
    //Get Steam User
    if(info.LoginProvider.ToLower() == "steam")
    {
        //I need the DB User

    }

    _logger.LogInformation(5, "User logged in with {Name} provider.", info.LoginProvider);
    return RedirectToLocal(returnUrl);
}
我试过这个:

ApplicationUser u = await GetCurrentUserAsync();
u为空

找到了解决方案:

var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
if (result.Succeeded)
{
    //Get Steam User
    if(info.LoginProvider.ToLower() == "steam")
    {
        var user = await _userManager.FindByLoginAsync("Steam", info.ProviderKey);
        user.AvatarPath = SteamApi.GetSteamAvatar(playerData);
        var ir = await _userManager.UpdateAsync(user);
        if(!ir.Succeeded)
        {
            foreach (var err in ir.Errors)
            {
                Console.WriteLine(err.Code + " - " + err.Description);
            }
        }
    }
}
要修复包含UTF字符的steam用户的错误,请参见以下内容: 设置
AllowedUserNameCharacters
string。空
跳过用户名验证

唯一的问题是,UserManager没有更新内存中的数据,重定向到my HomeController仍然显示旧数据。。。但是数据库被正确更新了