2016-06-28 37 views
5

ASP.Net Coreには、ユーザー認証を処理するSignInManagerがあります。方法の1つはPasswordSignInAsync(string username, string password, bool isPersistent, bool lockoutOnFailure)です。 lockoutOnFailureをtrueに設定すると、一定回数失敗したログイン試行後に一時的にユーザーをロックアウトする必要があります。それぞれの1によってASP.Net Core SignInManager lockoutOnFailure

  • AccessFailedCount増のアクセスに失敗し、それは5に当たったとき、それは0にロールオーバー時には0
  • にロールオーバー:私は、以下を参照してください。データベースのAspNetUsersテーブルを見ると

    LockoutTimeEndは5分後に設定されます。しかしLockoutEnabled

  • も、ロールオーバーの後に0のままで、ユーザーがログインしようとして続けることができます。

意図した機能は、5分間のアカウントをロックアウトし、その後、5回のログイン試行を許可しているように見えます。

は、だから私の質問はされています

  1. どのように私は許さログイン失敗回数を設定するのですか?
  2. ロックアウト期間を設定するにはどうすればよいですか?
  3. なぜロックアウトトリガーはありませんか?私は許可して失敗したログインの数を設定するにはどうすればよい
+0

については、デフォルトのプロジェクトテンプレートで動作するので、いくつかのコードを共有する必要があります。 – tmg

+0

私はこれについて知りました。 「LockoutEnabled = false」のユーザーは、「LockoutTimeEnd」に関係なくロックアウトされません。 「LockoutEnabled = true」のユーザーは、LockoutTimeEnd> DateTime.Nowの場合にのみロックアウトされます。すべてのユーザーを「LockoutEnabled = false」に設定して、ロックアウトメカニズム全体を効果的に無効にしました。 –

+1

どのように設定しましたか?登録アクションでユーザーを作成するとき – tmg

答えて

7
  1. ロックアウト期間を設定するにはどうすればよいですか?

デフォルトのプロジェクトテンプレートは、(StartupクラスConfigureServices方法で)アイデンティティサービスAddIdentity<TUser, TRole>を設定するための拡張メソッドを使用しています。このメソッドには、IdentityOptionsを構成できるオーバーロードがあります。

代わりの

services.AddIdentity<ApplicationUser, IdentityRole>() 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 

あなたは

var lockoutOptions = new LockoutOptions() 
{ 
    AllowedForNewUsers = true, 
    DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5), 
    MaxFailedAccessAttempts = 5 
}; 

services.AddIdentity<ApplicationUser, IdentityRole>(options => 
    { 
     options.Lockout = lockoutOptions; 
    }) 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 

を上記使用することができ、これらはLockoutOptionsのデフォルト値ですが、好きなようにあなたがそれらを変更することができますので、pointelessです。

関連する問題