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