即使是无效用户也能登录成功

时间:2021-05-06 11:19:05

标签: flutter validation authentication sqflite

我只是想在登录时接受用户名和密码,并检查数据库中的用户是否有效,但问题是任何用户名和密码都显示“登录成功”。我给它的任何值都显示登录成功,但它应该显示“用户不存在”。请帮帮我。

db_service.dart

Future<RegisterUser> getLogin(String user, String password) async {
    await DB.init();
    var res = await DB.rawQuery("userDetails WHERE emailId = '$user' and password = '$password'");

    if (res.length > 0) {
      return RegisterUser.fromMap(res.first);
    }

    return null;
  }

UserLogin.dart(登录按钮代码)

bool validateAndSave() {

    final form = _formKey.currentState;
    if (form.validate()) {
      form.save();
      return true;
    }
    return false;
  }
  void _submit(){
    final form = _formKey.currentState;
    var res;
    if (validateAndSave()) {
      setState(() {
        res=dbService.getLogin(_email, _password).then((value) {
          if(res!=0){
            FormHelper.showMessage(
              context,
              "Login",
              "Login Successfull",
              "Ok",
                  () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => People_List(),
                  ),
                );
              },
            );}
          else {
            FormHelper.showMessage(
                context,
                "Login",
                "Login not Successfull",
                "Ok", () {}

            );
          }
        });
      });


    }
  }

1 个答案:

答案 0 :(得分:0)

您似乎以错误的方式使用了 Future 函数。

res= await dbService.getLogin(_email, _password);
if(res != 0){

} else {

}

dbService.getLogin(_email, _password).then((value) {
  if(value != 0){

  }else {

  }
}, onError(e){});