我有一个使用ASP.NET Identity 3.0的Web应用程序,我在其中创建用户(而不是用户注册自己)。我发送确认电子邮件以验证他们的电子邮件帐户。他们的想法是,他们通过URL进入,因为他们还没有设置密码,他们将设置初始密码和一举验证他们的电子邮件(我正在努力尽可能优雅地一石二鸟。
问题是,如果根据复杂性策略输入的密码不是有效密码,我不应该使用UserManager.ConfirmEmail()确认电子邮件,因为这会使令牌失效。我知道检查密码是否符合的唯一方法是实际尝试使用UserManager.AddPassword()进行设置,但我不应该尝试更改,除非我知道电子邮件确认令牌有效。
如何在不设置密码的情况下检查密码是否合规?或者如何在不过期的情况下检查令牌是否有效?
答案 0 :(得分:2)
ASP.NET Identity 3.0确实提供了一个密码验证程序,您可以在执行其他步骤之前检查密码是否有效。
Here是您可以找到实际代码的地方。
Here是您可以找到一些单元测试的地方,可以让您了解如何使用密码验证器。
一般用法如下:
var validator = new PasswordValidator<User>();
var result = await validator.ValidateAsync(UserManager, null, passwordToValidate);
if (result.Failed) // Failed Validation
if (result.Succeeded) // Passed Validation
ValidateAsync
的第二个参数是用户实例,但这可能不适用于您的情况,因此null
位于此处。
我希望这可以帮助你。