哈希密码并存储在新数据库中,因为旧数据库被排除在外

时间:2012-02-18 17:09:25

标签: c# asp.net-mvc asp.net-mvc-3

public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                MembershipCreateStatus createStatus;
                Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", ErrorCodeToString(createStatus));
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }

在我填写注册表单后调用此注册函数,但我刚刚用新创建的sdf数据库替换了默认的mdf数据库,我还想使用md5来散列成员的密码。我应该在上面的源代码中添加这样的功能?

[UPDATE]

1 个答案:

答案 0 :(得分:1)

看起来您正在使用ASP.Net成员资格API来完成此任务。知道这一点,我会尝试将您使用的代码与此API保持一致,以忠实于API的目的。在将密码传递给API之前,我不会对密码进行哈希处理。在保存密码之前,我会在MembershipProvider中对其进行哈希处理;我会在任何密码验证程序之前将其哈希。这样可以在您的应用程序代码之外保留密码实现的详细信息,只知道如何与ASP.Net Membership API进行交互。

因此,您应该了解您的MembershipProvider的配置方式。我不确定默认的SQL MembershipProvider是否能够自动执行此操作,但如果是这样,那就太好了。否则,您可以使用自己的实现覆盖SQL MembershipProvider。

请作为起点[1],它描述了SqlMembershipProvider类。

[1] http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx