-1

以下は私の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;

        }

間違ったパスワードを入力しても、プログラムは常に警告ボックス、つまり「ユーザーが存在します」を表示しています。何が問題なのか教えてください

4

3 に答える 3

1

結果がない場合でも、式は空の列挙子を返します。null は返されません。結果の数を見て、それが少なくとも 1 つであることを確認する必要があります。

また、パスワードを平文で保存するのもやめなければなりません。

ユーザーが存在するかどうかだけを知りたい場合は、ユーザー名を調べてください。実際にログインしたい場合は、その特定のユーザーのソルトを検索または計算し、そのソルトとパスワードを使用してハッシュ コードを生成する必要があります (安全なハッシュ アルゴリズムを使用して... md5 はカウントされません)。次に、それをパスワード フィールドに保存されている値と比較します。ユーザーがパスワードを設定または変更するときは、同じプロセスを使用して新しい値を保存します。それ以外はひどく間違っています。

于 2013-04-09T19:59:59.080 に答える