c# - 我在哪里使用 mvc4 和 EF 在 asp.net 中散列密码?

标签 c# asp.net entity-framework asp.net-mvc-4 cryptography

所以我在默认 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/

相关文章:

c# - 列表中小于 X 的最大值

c# - 从 EF 查询获取 Id,然后使用它来删除记录

c# - 使用 IIS 的基本身份验证在 WCF 服务中获取用户名

c# - 增加 Win7 Aero 主题中 DateTimePicker Calender 的字体大小

c# - 如何在调试期间在 ASP.NET (C#) 中使用 Console.WriteLine?

c# - 多个单词导致自动完成扩展程序出现问题

asp.net - 仅当接口(interface)尚未绑定(bind)时,如何在 Ninject 中绑定(bind)接口(interface)?

asp.net-mvc - 如何在 ASP.Net Identity 上获取 OWIN 上下文?

.net - LINQ 到 SQL : How to check if any item in one entity collection exists in another entity collection?

c# - 使用 MySQL 时,为什么 Entity Framework 4 试图将长整数转换为小数?