查询数据库中的数据

时间:2013-04-09 18:45:58

标签: asp.net asp.net-mvc asp.net-mvc-3

以下是我的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;

        }

我是程序总是显示一个警告框,即“用户存在”,即使我输入了错误的密码。 请告诉我什么是问题

3 个答案:

答案 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语句。