2017-04-07 9 views
0

郵便配達員を使用してユーザーにサインインしようとしています。 OAuth2トークン検証ミドルウェアを使用してOpenIdDict認証ソリューションを実装しました。イムは、アクセスを取得しようとしたときしかし、私は、次のエラーメッセージが表示されます:"username/password couple is invalid"

ユーザー名/パスワードのカップルは、私がテストユーザーを次のようしている

無効です。郵便配達中

using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope()) 
{ 
    var db = serviceScope.ServiceProvider.GetService<ApplicationDbContext>(); 

    db.Database.EnsureDeleted(); 
    db.Database.EnsureCreated(); 

    var user = new User(); 
    var hasher = new PasswordHasher<User>(); 

    db.AddRange(
     new ApplicationUser { FirstName = "Thomas", LastName = "Smith", UserName = "[email protected]", 
      Email = "[email protected]", PasswordHash = hasher.HashPassword(user, "Password1") }, 
    ); 
    db.SaveChanges(); 
} 

マイセットアップ: My setup in postman

私はauthorizationControllerでデバッグするときに、私のユーザー変数は、変数への入力が正しいにもかかわらず、ヌルであることが判明しました。

if (request.IsPasswordGrantType()) 
{ 
    var user = await _userManager.FindByNameAsync(request.Username); 
    if (user == null){ 
     return BadRequest(new OpenIdConnectResponse { 
      Error = OpenIdConnectConstants.Errors.InvalidGrant, 
      ErrorDescription = "The username/password couple is invalid." 
     }); 
    } 
+1

実際にあなたの使用をデータベースに書き込むことはないからですか?あなたにdb.SaveChanges()が不足しているようです。 ? – Kris

+1

申し訳ありませんが、私のコードの例でそれを忘れてしまった。コードが更新されました。また、テーブルをチェックして、テーブルを更新します。 – ebk

答えて

0

非同期方式でコードをお持ちですか?私の推測では、待機中にブロックされていないと、ユーザールックアップが返される前にユーザー== nullがテストされています。そこに遅延を追加して、それが変更されているかどうか確認してください。

+1

これは問題になる可能性がありますが、どのように遅延を使用しますか? – ebk

+0

あなたのコードはどのような方法ですか?メソッドのシグネチャにasyncを追加してみてください。private非同期BadRequest login(){...} – edd91

関連する問題