C# 如何验证sqlite用户名&;用户在xamarin中输入的密码

C# 如何验证sqlite用户名&;用户在xamarin中输入的密码,c#,sqlite,xamarin,xamarin.ios,C#,Sqlite,Xamarin,Xamarin.ios,我有一个sqlite数据库,它保存着每个注册用户的用户名和密码。我现在正试图创建一个登录页面,但我不知道如何用sqlite数据库的输入验证用户的输入 我的第一个想法是将存储在sqlite上的用户名和密码转换成字符串数组,然后循环遍历这些数组,直到它找到用户在登录页面中输入的内容,但我在网上找到的方法都没有起作用。不确定这是否是正确的方法 这是DataBaseManager类中用于选择所有用户名的代码: public List<User> GetUNames(){ r

我有一个sqlite数据库,它保存着每个注册用户的用户名和密码。我现在正试图创建一个登录页面,但我不知道如何用sqlite数据库的输入验证用户的输入

我的第一个想法是将存储在sqlite上的用户名和密码转换成字符串数组,然后循环遍历这些数组,直到它找到用户在登录页面中输入的内容,但我在网上找到的方法都没有起作用。不确定这是否是正确的方法

这是DataBaseManager类中用于选择所有用户名的代码:

public List<User> GetUNames(){

        return dbConnection.Query<User>("return dbConnection.Query<User>("Select * FROM [User] WHERE uName = @username AND Pw = @password");

    }
但在登录类中,我在以下方面遇到了错误:

DBM.ValidateUN()
它表示“没有与所需的形式参数‘username’相对应的参数‘DatabaseManager.ValidateUN(string)’”

以及
password.Text()
.Text
。它说“非发票成员'Entry.Text'不能像方法一样使用。

public bool ValidateUser(字符串用户,字符串密码)
public bool ValidateUser(string user, string password)
{

    var results = dbConnection.Table<User>().Where(v => v.uName == user && v.Pw = password).ToList();

    return (results.Count() > 0);
}
{ var results=dbConnection.Table()。其中(v=>v.uName==user&&v.Pw=password)。ToList(); 返回(results.Count()>0); }
身份验证是一个已解决的问题,您不应该尝试重新创建该控制盘。请查看Auth0或Identity server。请注意这两个(以及存在的其他所有控制盘)不要在客户端上运行。如果你把数据库放在每个人的手机上,黑客攻击大约需要60秒。嗨,我以前试过使用auth0和Identity server,就我个人而言,这太复杂了。此外,这个应用程序应该是用于学校项目的,只能通过mac上的模拟器进行演示,这就是为什么我没有这么做的原因t继续使用auth0或Identity server。除了我自己的手机和模拟器之外,它不会安装在任何手机上。谢谢你的建议。那么也许你只需要从[User]执行
Select*其中uName=@username AND password=@password
我刚刚将其更改为您建议的,但是在登录页面类中我应该做什么?只需检查您是否从数据库中获得了一个
用户
。您好,我已经更新了我的代码,但仍有几个错误。我已经更新了我的问题,以显示我已更改的内容和错误首先,单独验证用户名和密码将不起作用-如果输入用户A的用户名和用户B的密码,将返回true。其次,您需要将用户名/密码作为参数传递给函数,并将返回bool(true/false)。
        var results = dbConnection.Table<User>().Where(v => v.uName == username).ToList();

        return (results.Count() > 0);
    }

    public bool ValidatePW(string password)
    {

        var results = dbConnection.Table<User>().Where(v => v.Pw == password).ToList();

        return (results.Count() > 0);
    }
DatabaseManager DBM = new DatabaseManager();



    private async void Handle_Clicked(object sender, System.EventArgs e)

    {

        if (DBM.ValidateUN() == username.Text.ToLower() && DBM.ValidatePW == password.Text()) {

            await Navigation.PushModalAsync(new Home());

        } else if (DBM.ValidateUN() != username.Text.ToLower()){

            await DisplayAlert("Error", "Username or password is incorrect", "OK");

        } else if (DBM.ValidatePW != password.Text()){

            await DisplayAlert("Error", "Username or password is incorrect", "OK");

        }


    }
public bool ValidateUser(string user, string password)
{

    var results = dbConnection.Table<User>().Where(v => v.uName == user && v.Pw = password).ToList();

    return (results.Count() > 0);
}