私はc#mvc WebアプリケーションへのログインにMicrosoft.AspNet.Identityを使用しています。ロックアウトユーザーストアを含むさまざまなユーザーストアを実装しました。しかし、私はそれが適切に動作するようにすることはできません。カスタムユーザーマネージャでは、最大試行回数、ロックアウト時間などを設定します。Microsoft AspNet IDの実装IUserLockoutStore
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(30);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
上記のコードとパラメータを使用すると、ユーザーがロックされることはありません。 manager.MaxFailedAccessAttemptsBeforeLockoutを2に設定すると、1回の試行後にユーザーがロックされます。誰も "IUserLockoutStore"インターフェースを正しく実装する方法に関するチュートリアルを持っていますか?私は午前中にGoogleを検索しており、目標に近づいていません。ここに私の "IUserLockoutStore"インターフェースの実装があります。 UTC時間私が使用GetLockoutEndDateAsync
で
::(そしておそらくより大幅に)、あなたの戻り値からも
... new DateTimeOffset(DateTime.UtcNow.AddMinutes(-5))
public Task<DateTimeOffset> GetLockoutEndDateAsync(Gebruiker user)
{
var lockOutDate = user.LockOutDate.HasValue ? user.LockOutDate.Value : new DateTimeOffset(DateTime.Now.AddMinutes(-5));
return Task.FromResult(lockOutDate);
}
public Task SetLockoutEndDateAsync(Gebruiker user, DateTimeOffset lockoutEnd)
{
user.LockOutDate = lockoutEnd;
user.IsLocked = true;
return Context.SaveChangesAsync();
}
public Task<int> IncrementAccessFailedCountAsync(Gebruiker user)
{
user.LoginTry++;
return Context.SaveChangesAsync();
}
public Task ResetAccessFailedCountAsync(Gebruiker user)
{
user.LoginTry = 0;
return Context.SaveChangesAsync();
}
public Task<int> GetAccessFailedCountAsync(Gebruiker user) => Task.FromResult(user.LoginTry);
public Task<bool> GetLockoutEnabledAsync(Gebruiker user) => Task.FromResult(true);
public Task SetLockoutEnabledAsync(Gebruiker user, bool enabled)=> Task.FromResult(enabled);
最後に素晴らしいと便利な説明。それらのインターフェース上のgetters/setterの周りには混乱があります。 – contactmatt