我正在使用锁定功能开发 .NET Core 多租户应用+ .NET Core Identity 。我想为每个租户配置锁定功能(我的意思是最大失败登录尝试次数)。
现在我为Startup.cs
类中的所有用户执行此操作:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<IdentityOptions>(options =>
{
options.Lockout.MaxFailedAccessAttempts = 5;
});
...
}
我可以为每个租户设置可配置的设置吗?我怎么能这样做?
答案 0 :(得分:2)
我认为您可以使用的每个租户都没有可配置的属性。
但是,您可以将此逻辑添加到AccountController的Login方法。
var result = await _signInService.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
如果结果不成功,您可以通过FindByEmailAsync(model.email)
让用户检查他的失败尝试次数
如果其锁定计数(您可以添加为ApplicationUser属性,声明或您喜欢的其他方法)等于或高于您为此用户设置的限制,则可以将其锁定。
这可能是检查此问题的最基本方法。
我建议您在UserManager之上实现一个用户服务,它将保存这样的逻辑,以确保在每个PasswordSignInAsync()上执行此检查,无论它在何处使用。