所以我在默认 View 中显示了一些模型。我想弄清楚是否要使用 Crypto.HashPassword() 方法散列密码。我是在 Controller 或模型中还是在何处执行此操作?我研究了如何去做,但我只是在寻找不同的方法,而不是行动发生的地方。 MVC 和 asp.net 的初学者,因此任何方向正确的点都会有很大帮助。先感谢您。
最佳答案
我会像这样定义用户类:
public class User
{
private string PasswordHash {get; set;} //assuming your db supports serializing private properties. If not increase visibility as necessary.
public void SetPassword(string newPassword)
{
PasswordHash = PasswordHasher.CreateHash(newPassword);
}
public bool VerifyPassword(string passwordCandidate)
{
return PasswordHasher.Verify(PasswordHash, passwordCandidate);
}
}
我不会有
User.Password
属性,因为您从不存储它,并且密码和哈希值之间没有简单的映射。PasswordHash
属性只能由数据库序列化程序和通过这两个函数访问。 Controller 应该获取用户,然后调用这些方法来验证/更改密码。我还建议使用与
Crypto
类具有类似 API 的自定义散列器。 Crypto
具有一个相当小的值的硬编码迭代计数。关于c# - 我将在哪里使用 mvc4 和 EF 在 asp.net 中散列密码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21745404/