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

您的列表永远不会为空。您需要检查您的列表是否包含一个元素。

我建议你使用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 回答