2017-02-22 98 views
0

我開發.NET核心多租戶應用+ .NET核心身份鎖定功能。我想做鎖定功能(我的意思是最大失敗登錄嘗試)可配置爲每個租戶。鎖定功能對每個租戶的.Net核心身份

現在我這樣做,在Startup.cs類中的所有用戶:

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 

    services.Configure<IdentityOptions>(options => 
    { 
     options.Lockout.MaxFailedAccessAttempts = 5; 
    }); 

    ... 
} 

我可以這樣做,對於每一個租戶設置配置?我該怎麼做?

回答

2

我不認爲你可以使用每個租戶有一個可配置的屬性。

但是,您可以將此邏輯添加到AccountController的Login方法。

var result = await _signInService.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false); 

如果結果沒有成功,您可以通過FindByEmailAsync(model.email)讓用戶檢查自己的失敗嘗試計數

如果其鎖定計數(你可以添加ApplicationUser財產,債權或其他一些方法你喜歡)等於或高於您爲此用戶設置的限制,您可以將他鎖定。

這可能是檢查此問題的最基本方法。

我建議你在UserManager上實現一個用戶服務,它將保存這樣的邏輯,以確保這個檢查將在每個PasswordSignInAsync()上執行,而不管它在哪裏使用。

+0

那麼我應該在'Startup.cs'中設置'MaxFailedAccessAttempts = 100'來使用自定義邏輯嗎? –

+0

我想說,如果你想爲每個用戶定義它,你需要從Startup.cs中刪除限制。 –

+0

默認情況下,這個值= 5,我需要超過5。我認爲這會增加潛在的問題。 –