0

Webアプリでユーザーを認証するメソッドを作成しようとしています。コードは次のとおりです。

public void SignIn(UserInfo Entity)
    {
        if(this.CheckUser(Entity.UserName, Entity.Password))

        {
            FormsAuthentication.RedirectFromLoginPage(Entity.UserName, false);
        }
        else
        {

        }
    }

    public bool CheckUser(String _UserName, string _Password)
    {
        using (var context = new TourBlogEntities1())
        {
            List<UserInfo> test = null;
            test = (from s in context.UserInfoes
                       where s.UserName == _UserName && s.Password == _Password
                       select s).ToList<UserInfo>();

            if(test==null)
            {
                return false;
            }
            else
            {
                return true;
            }

        }

    }

問題は、実際には登録されていない任意のユーザー名とパスワードでサインインできることです。私が間違ったことは何ですか?前もって感謝します。

4

1 に答える 1

2

リストが null になることはありません。リストに要素が含まれているかどうかを確認する必要があります。

Any()orCount()メソッドを使用することをお勧めします。

Any() - シーケンスに要素が含まれているかどうかを判断します。

Count() - 指定されたシーケンス内で条件を満たす要素の数を表す数値を返します。

サンプル

どれでも()

return (from s in context.UserInfoes
       where s.UserName == _UserName && s.Password == _Password
       select s).Any();

カウント()

return (from s in context.UserInfoes
       where s.UserName == _UserName && s.Password == _Password
       select s).Count() != 0;

詳しくは

于 2012-10-09T10:18:50.273 に答える