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

10-10 14:23