以下是我的JS代码
$("#submitPassword").click(function () {
$.ajax({
type: "POST",
url: "@Url.Action("IsUserExist","Register")",
data: { emailOrPhone: $("#emailOrPhone").val(), password: $("#password").val() },
success:function(response){
if (response) {
alert("User Exist");
}
else alert("Doesn't exist");
}
});
});
以下是控制器端代码
public bool IsUserExist(string emailOrPhone,string password)
{
DBEntities db = new DBEntities();
var q = from profile in db.Profiles
where profile.Email == emailOrPhone && profile.Password == password
select profile;
if (q == null)
return false;
else
return true;
}
我是程序总是显示一个警告框,即“用户存在”,即使我输入了错误的密码。 请告诉我什么是问题
答案 0 :(得分:1)
如果没有结果,表达式仍将返回一个空的枚举器。它不会返回null。您需要查看 count 的结果数量,并检查它至少是一个。
如果您只想知道用户是否存在,只需查找用户名即可。如果您确实要将它们登录,则需要查找或计算该特定用户的salt,使用该salt和密码生成哈希码(使用 secure 哈希算法... md5不计数),然后将其与密码字段中存储的值进行比较。当用户设置或更改其密码时,您使用相同的过程来保存新值。其他任何事都是非常错误的。
答案 1 :(得分:0)
尝试使用if条件
中对response.data的更改响应 success:function(response){
if (response.data) {
alert("User Exist");
}
else alert("Doesn't exist");
}
答案 2 :(得分:0)
比较JavaScript中字符串的响应:
if (response == "True") {
alert("User Exist");
} else if(response == "False") {...
因为bool控制器返回“False”或“True”,我敢打赌,它被JavaScript视为字符串,所以响应将始终被定义为真。
下次尝试调试:首先,你的控制器 - 如果“q”为null,则返回null。很容易得出结论,问题在于JavaScript。调试JS,至少使用console.log(响应),你会想到如何更改if
语句。