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 手动散列密码