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]
答案 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