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 メソッドを使用してデータベースに保存する前にパスワードを暗号化し、MembershipProvider.DecryptPassword メソッドを使用してパスワードを暗号化しようとすると、「保護レベルのためにアクセスできません」というエラー警告が表示されます。

4

1 に答える 1

1

MembershipProvider.EncryptPasswordとメソッドの両方MembershipProvider.DecryptPasswordが保護されているためです。

そのため、クラスまたはその派生クラス定義の外でそれらにアクセスすることはできません。

また、それを介してユーザーを作成している間Membership.CreateUser、パスワードは自動的に暗号化されます。

于 2012-10-24T05:47:46.027 に答える