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