MVC使用ASP.NET标识个人帐户-如何添加安全问题?

MVC使用ASP.NET标识个人帐户-如何添加安全问题?,asp.net,asp.net-mvc,security,asp.net-identity,Asp.net,Asp.net Mvc,Security,Asp.net Identity,以下是我的设想: 我需要捕获至少3个安全问题和答案,作为网站用户注册的一部分(内置MVC 5,使用个人用户帐户作为身份验证手段)。我可以通过扩展ApplicationUser对象来实现这一点 到目前为止还不错 我想在密码恢复过程中问这些问题 我在ASP.NET Identity framework中找不到任何对安全问题的支持 我的问题: 我是否需要在内置UserStore库之外实现安全问题,或者是否存在类似于.NET 2.0中ASP.NET成员资格功能中的秘密问题的现有支持 注意:如果您需要更多

以下是我的设想:

我需要捕获至少3个安全问题和答案,作为网站用户注册的一部分(内置MVC 5,使用个人用户帐户作为身份验证手段)。我可以通过扩展ApplicationUser对象来实现这一点

到目前为止还不错

我想在密码恢复过程中问这些问题

我在ASP.NET Identity framework中找不到任何对安全问题的支持

我的问题:

我是否需要在内置UserStore库之外实现安全问题,或者是否存在类似于.NET 2.0中ASP.NET成员资格功能中的秘密问题的现有支持


注意:如果您需要更多信息,请告诉我。

要在ASP.Net Identity中执行此操作,请将答案视为自定义密码

使用
userManager.PasswordHasher.HashPassword(Answer1)
为每个答案生成哈希,以存储在数据库中的自定义类属性/字段中。(其中userManager是Identity userManager的实例)

回收时,使用

var verification = userManager.PasswordHasher.VerifyHashedPassword(dbHash, Answer1);
验证挑战

然后,您可以检查每个答案的
验证.Success
是否为真


ref:

要在ASP.Net Identity中执行此操作,请将答案视为自定义密码

使用
userManager.PasswordHasher.HashPassword(Answer1)
为每个答案生成哈希,以存储在数据库中的自定义类属性/字段中。(其中userManager是Identity userManager的实例)

回收时,使用

var verification = userManager.PasswordHasher.VerifyHashedPassword(dbHash, Answer1);
验证挑战

然后,您可以检查每个答案的
验证.Success
是否为真


参考:我想你回答了我的问题。我想知道是否有对存储安全问题本身的内置支持。我最终为我的安全问题/答案构建了自定义类,但我喜欢使用PasswordHasher作为答案的想法。没有任何内置支持或更自动化的方式来存储安全问题。这可能是由于这样一个事实,即安全问题是一种糟糕的安全形式,因为它是带有提示(问题)的密码(答案),特别是如果问题太简单的话。尽管如此,有时安全问题是付钱给你的人所要求的。。有时候有三个好问题是很安全的。似乎Identity更注重双因素身份验证,将其作为扩展密码恢复的选择。我想你回答了我的问题。我想知道是否有对存储安全问题本身的内置支持。我最终为我的安全问题/答案构建了自定义类,但我喜欢使用PasswordHasher作为答案的想法。没有任何内置支持或更自动化的方式来存储安全问题。这可能是由于这样一个事实,即安全问题是一种糟糕的安全形式,因为它是带有提示(问题)的密码(答案),特别是如果问题太简单的话。尽管如此,有时安全问题是付钱给你的人所要求的。。有时候有三个好问题是很安全的。似乎Identity更多地关注双因素身份验证,将其作为扩展密码恢复的选择。