2012-10-24 67 views
1
public ActionResult Register(RegisterModel RegisterModel, string returnUrl) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 
       MembershipCreateStatus createStatus; 

       System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
       Byte[] Password = encoding.GetBytes(RegisterModel.Password); 
       var EncryptedPass = MembershipProvider.EncryptPassword(Password); 

       Membership.CreateUser(RegisterModel.UserName, RegisterModel.Password, RegisterModel.Email, null, null, true, null, out createStatus); 

       if (createStatus == MembershipCreateStatus.Success) 
       { 
        FormsAuthentication.SetAuthCookie(RegisterModel.UserName, false /* createPersistentCookie */); 
        return Redirect(returnUrl ?? Url.Action("Index", "Education")); 
       } 
       else 
       { 
        ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
       } 
      } 

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

尝试使用EncryptPassword方法将其存储在数据库之前对密码进行加密,然后Dycrypt它MembershipProvider.DecryptPassword方法,但得到时错误“因为它的保护水平是无法访问” a'由于其保护级别'错误警告而无法访问。获取尝试使用MembershipProvider.EncryptPassword

+0

需要查看更多代码才能告诉您发生了什么。它与您尝试访问的私人或内部成员有关。 – awright18

回答

1

因为MembershipProvider.EncryptPasswordMembershipProvider.DecryptPassword方法都受保护。

因此,您将无法在类或其派生类定义的外侧访问它们。

而通过Membership.CreateUser创建任何用户,它会自动加密密码。

+0

好的谢谢。因此,我甚至可能甚至不需要从我的操作方法中调用这些方法,并且如果PasswordFormat属性在web.config中设置为“加密”,则默认成员资格提供程序可能会处理加密/解密操作。 – LaserBeak