【问题标题】:ASP.NET Identity Custom PasswordValidator check against UsernameASP.NET Identity Custom PasswordValidator 检查用户名
【发布时间】: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

标签: c# asp.net asp.net-mvc asp.net-identity-2


【解决方案1】:

你可以看看Fluent Validation library

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

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

【讨论】:

  • 感谢您的回复,但我们的目标是将此验证放入模型中。我想将此检查集中在用户管理器中以及所有其他密码和用户要求。
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 2015-05-19
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2015-10-12
相关资源
最近更新 更多