以下是我的情景:
我需要捕获至少3个安全问题&答案作为网站用户注册的一部分(内置MVC 5使用个人用户帐户作为身份验证方式)。我可以通过扩展ApplicationUser对象来做。
到目前为止一切顺利。
我想在密码恢复过程中提出这些问题。
我没有在ASP.NET Identity框架中找到任何对安全问题的支持。
我的问题:
我是否需要在内置的UserStore库中实现安全性问题,或者是否存在类似于.NET 2.0中ASP.NET成员身份功能中的秘密问题的支持?
注意:如果您需要更多信息,请与我们联系。
答案 0 :(得分:4)
要在ASP.Net Identity中执行此操作,请将答案视为自定义密码。
使用userManager.PasswordHasher.HashPassword(Answer1);
为每个答案生成一个哈希值,以存储在数据库中的自定义类属性/字段中。 (其中userManager是Identity UserManager的实例)
恢复时,请使用
var verification = userManager.PasswordHasher.VerifyHashedPassword(dbHash, Answer1);
验证挑战。
然后,您可以检查每个答案是否为verification.Success
。
参考:MSDN