我无法弄清楚为什么我的WebSecurity.ChangePassword无效。这是我正在处理的一段代码。
if (WebSecurity.ChangePassword(USER, oldpass, password)) {
Response.Redirect("~/SuperAdmin");
return;
}else {
ModelState.AddFormError(USER);
// I put the each WebSecurity.ChangePassword parameter to this parameter to check whether
//each parameter valid or not (print it out)
}
并且对于WebSecurity.ChangePassword的每个参数,我从数据库中检索它,如下所示
if(IsPost){
Validation.RequireField("email", "Masukkan email");
Validation.RequireField("password", "Masukkan Password");
Validation.RequireField("userid", "user ID tidak ada!");
email = Request.Form["email"];
password = Request.Form["password"];
userId = Request.Form["userId"];
if(Validation.IsValid()){
var db = Database.Open("StarterSite");
var updateCommand2 = "UPDATE UserProfile SET Email=@0 WHERE UserId=@1";
db.Execute(updateCommand2, email,userId);
var USER = db.QueryValue("SELECT a.Email FROM UserProfile a, webpages_Membership b WHERE a.UserId=b.UserId AND a.UserId= @0", userId);
var oldpass = db.QueryValue("SELECT Password FROM webpages_Membership WHERE UserId = @0", userId);
谁能告诉我这里似乎有什么问题?提前致谢
答案 0 :(得分:0)
WebPages会员资格包含了您不需要获取用户电子邮件地址和密码的所有内容(我猜这个电子邮件地址是用户名吗?)ChangePassword方法有3个参数。这是UserName,CurrentPassword,NewPassword。
您收到错误的原因是您根据用户当前的ID从数据库中获取旧密码,但旧密码与用户当前密码不匹配,因为旧密码已加密且您没有加密他们提交(实际上你甚至没有一个字段让他们输入他们当前的密码)。
WebPages会员提供商将完成您不需要打开数据库并更新用户密码的所有更新,您正在做的奇怪事情是告诉用户输入新密码但不要求当前密码!有关详细信息,请参阅此处:
http://www.thecodingguys.net/reference/asp/websecurity-changepassword
答案 1 :(得分:0)
确保您尝试更改密码的用户不是LockedOut。您可以通过此
进行检查select * from aspnet_membership
where
IsLockedOut = 1