所以我在默认 View 中显示了一些模型。我想弄清楚是否要使用 Crypto.HashPassword() 方法对密码进行哈希处理。我是在 Controller 或模型中还是在何处执行此操作?我研究了如何去做,但我只是在寻找不同的方法,而不是在什么地方发生行动。 MVC 和 asp.net 的初学者,所以在正确方向上的任何一点都会有很大的帮助。提前谢谢你。
最佳答案
您通常会希望在 Controller 中执行哈希操作,并将哈希结果值存储在模型.
以简单的用户登录您的网站为例:
- 首次创建用户帐户时,您将调用 Crypto.HashPassword(pwd) 来计算用户设置的密码的哈希值。您可以在 Controller 中执行此操作,在用户注册新帐户的操作中。
- 生成的哈希值需要存储在模型中(例如在数据库中),以便您稍后可以检索它。
- 当同一用户下次尝试登录时,您需要调用 Crypto.VerifyHashedPassword(storedHash, submittedPwd)。 Crypto 类使用相同的 IV 和 Salt 对提交的密码进行哈希处理,如果匹配则返回 True(密码正确),否则返回 False(密码错误)。
如果您是 MVC 和 ASP.Net 的新手,您可能需要查看 ASP.Net Forms Authentication(例如 this page on MSDN),您可以使用它来对用户进行身份验证,而无需推出自己的自定义解决方案。
关于c# - 我在哪里使用 mvc4 和 EF 在 asp.net 中散列密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745404/