2017-07-26 10 views
1

私のMVC Webアプリケーションでは、ASP.NET IDと、アプリケーション自体から登録しているユーザーを利用しています。私はIdentityConfigに設定したパスワードポリシーを適用したい。しかし、私たちの外部アプリ(ExternalLoginCallbackを利用していない)を介して登録しているユーザーは、そのアプリケーションにあるパスワードでパススルーすることができ、現在システムに登録されています。ASP.NET MVC IDプログラムでユーザーバイパスパスワードの検証を作成する

検索は失敗しています。これを達成するために独自のメソッドを書き換えようとする前に、アイデンティティを介してこれを達成するための良い方法が分かっていたのでしょうか。

答えて

0

パスワードでログインすると、あなたはこのようなもので、あなたのAccountControllerでログイン作用を有する可能性があります

:あなただけのユーザーに署名する場合は、あなたがこれを使用することができます

var result = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout: true); 

var result = await SignInManager.SignInAsync(user, true, true); 
+0

返信ありがとうございます!申し訳ありませんが、明確ではないが、アイデンティティに登録する必要があります。単にパススルーするだけではありません。これは私に、Createメソッドをパスワードなしで登録して利用するように促したと思うが、毎回外部アプリにauthのた​​めにループバックするだけだ。 – Ringo64

+0

@ Ringo64ああ、私はそれらのユーザーが既に登録されていると思った。 'await UserManager.CreateAsync(model);'を使って同じ方法で新しいユーザを登録することができます。 – Alisson

0

外部コールバックでは、トリックを行うことができます...次のコードは、MVCのOWINセキュリティ認証を使用して実装されています。

public async Task<ActionResult> ExternalLoginCallback(string returnUrl) 
{ 
    try 
    { 
     var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); 
     //get the user info i.e. username/email from claim and validate this user from identity. 
     //You can manually do it by fetching the data from identity tables. 
     //Match the case and generate a session and direct to home. 
    } 
    catch(Exception ex) 
    { 
    } 
} 

あなたはstartup.csにおけるアプリとフェッチされたユーザー情報を登録し、サードパーティの認証サーバーから、特許請求の範囲にそれらを置いていることを確認します。

//app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() 
      //{ 
      // ClientId = "", 
      // ClientSecret = "" 
      // Claims here after thentication 
      //}); 
関連する問題