2016-11-02 8 views
1

OpenIDでログインした後、私は蒸気ユーザーのアバターを取得しようとしています。 しかし、私は(データベースに手動でavaterを追加するために)右のログイン後にデータベースユーザーを取得する方法を外部ログイン後にAspNetUsers(CurrentUser)をデータベースから取得する

を知らない私は、アプリケーションのユーザーに新しい属性を追加しました:私が作成した

// Add profile data for application users by adding properties to the ApplicationUser class 
public class ApplicationUser : IdentityUser 
{ 
    public string AvatarPath { get; set; } 
} 

新しい移行とDBを更新しました。ログイン直後にユーザーのデータを変更しようとしていますが、現在のユーザーを取得するにはどうすればいいですか?私はこの試みた

// 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); 
} 

AccountController uはヌル

答えて

1

ある

ApplicationUser u = await GetCurrentUserAsync(); 

は解決策を見つけた:

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を含む蒸気のユーザーとエラーを修正するには文字、se e this: .NET MVC 6/vNext UserValidator to allow alphanumeric characters 設定AllowedUserNameCharactersstring.emptyは、ユーザー名の検証をスキップします。

UserManagerはメモリ内のデータを更新せず、私のHomeControllerへのリダイレクトは古いデータを表示しますが、データベースは正しく更新されました。

関連する問題