每个租户的锁定功能 .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() 执行此检查。