Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码优先-验证密码并对同一实体进行哈希 代码优先 实体框架 C Visual Studio 2012_C#_Entity Framework_Code First_Password Protection - Fatal编程技术网

C# 代码优先-验证密码并对同一实体进行哈希 代码优先 实体框架 C Visual Studio 2012

C# 代码优先-验证密码并对同一实体进行哈希 代码优先 实体框架 C Visual Studio 2012,c#,entity-framework,code-first,password-protection,C#,Entity Framework,Code First,Password Protection,我有一个用户帐户实体,它根据正则表达式验证密码 在保存到数据库之前,我是否可以使用一个事件将密码转换为哈希值 我的问题是,如果我先散列密码,那么我无法使用此实体进行验证 我曾考虑将验证提取到另一个区域,只将散列值保存到实体 电流如下所示 用户输入新帐户的详细信息 已创建用户帐户实体 使用DataAnnotation验证实体 密码散列 保存到数据库的实体 有人能帮我想一想密码散列应该放在哪里吗如果你使用的是MVC,我的方法可能是- 将正则表达式放在Account类的Password字段中 在Acc

我有一个用户帐户实体,它根据正则表达式验证密码

在保存到数据库之前,我是否可以使用一个事件将密码转换为哈希值

我的问题是,如果我先散列密码,那么我无法使用此实体进行验证

我曾考虑将验证提取到另一个区域,只将散列值保存到实体

电流如下所示

用户输入新帐户的详细信息 已创建用户帐户实体 使用DataAnnotation验证实体 密码散列 保存到数据库的实体
有人能帮我想一想密码散列应该放在哪里吗如果你使用的是MVC,我的方法可能是-

将正则表达式放在Account类的Password字段中

在AccountController创建方法中:

检查模型状态是否有效-这将验证正则表达式和 所有其他必填字段。 调用哈希方法,并用account对象上的哈希密码替换现有的纯文本密码 保存到数据库

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(User user)
{
    if (ModelState.IsValid)
    {
        user.Password = PasswordHasher.Hash(user.Password);
        db.Users.Add(user);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(user);
}