每个租户.Net核心身份的锁定功能

时间:2017-02-22 09:24:42

标签: c# asp.net-core asp.net-core-identity

我正在使用锁定功能开发 .NET Core 多租户应用+ .NET Core Identity 。我想为每个租户配置锁定功能(我的意思是最大失败登录尝试次数)。

现在我为Startup.cs类中的所有用户执行此操作:

public void ConfigureServices(IServiceCollection services)
{
    ...

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

    ...
}

我可以为每个租户设置可配置的设置吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

我认为您可以使用的每个租户都没有可配置的属性。

但是,您可以将此逻辑添加到AccountController的Login方法。

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

如果结果不成功,您可以通过FindByEmailAsync(model.email)让用户检查他的失败尝试次数

如果其锁定计数(您可以添加为ApplicationUser属性,声明或您喜欢的其他方法)等于或高于您为此用户设置的限制,则可以将其锁定。

这可能是检查此问题的最基本方法。

我建议您在UserManager之上实现一个用户服务,它将保存这样的逻辑,以确保在每个PasswordSignInAsync()上执行此检查,无论它在何处使用。