ASP.NET Identity Custom PasswordValidator 检查用户名

Posted

技术标签:

【中文标题】ASP.NET Identity Custom PasswordValidator 检查用户名【英文标题】:ASP.NET Identity Custom PasswordValidator check against Username 【发布时间】:2015-04-20 20:30:06 【问题描述】:

我想检查密码不包含 ASP.NET 身份框架中的用户名。

自定义密码验证器的实现应该可以很好地完成这项工作,但是我如何访问用户名?

public class CustomPasswordValidator : PasswordValidator

    public override async Task<IdentityResult> ValidateAsync(string password)
    
        var result = await base.ValidateAsync(password);

        //How to access username here

        return result;
    
 

【问题讨论】:

用户此时是否已登录,还是新用户登录?如果是后者,则可能是不可能的,因为在用户登录之前不会设置User.Identity @stuartd: UserManager 将在创建用户或更改现有用户的密码时使用相同的 PasswordValidator 验证密码 有什么快乐吗? @Niko 你知道了吗? 不,我没有办法以正确的方式解决这个问题@ChrisMoutray 【参考方案1】:

你可以看看Fluent Validation library

它有一个非常适合您的场景的谓词验证器(必须)。 因此,您的验证规则将如下所示:

    RuleFor(model => model.Password)
        .Must((model, username) => !model.Password.Contains(username))

【讨论】:

感谢您的回复,但我们的目标是将此验证放入模型中。我想将此检查集中在用户管理器中以及所有其他密码和用户要求。

以上是关于ASP.NET Identity Custom PasswordValidator 检查用户名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Identity 中获取索赔值的最大值?

ASP.NET Identity教程ASP.NET Identity入门

ASP.NET Identity系列教程运用ASP.NET Identity

如何使用 Asp.Net Core 2.2 / IdentityServer4 / SP.NET Core Identity 手动散列密码

[ASP.NET MVC] ASP.NET Identity登入技术剖析

ASP.NET Identity系列教程Identity高级技术