在 URL 参数中传递用户名和密码(Dart 和 Flutter)

Pass the username and password in URL parameters (Dart & Flutter)

我有一个 flutter 应用程序,我正在使用 back4app.com 和 Parse RESTful api 来注册我的用户,我已经阅读了他们关于登录用户的文档,但我不知道如何在 URL 参数中将我的用户名和密码作为 JSON 编码传递:

我试过这个方法:

Future <void>loginMethod(String username,String password) async {

var url = Uri.parse('https://myshoppingapp.b4a.io/login/$username:$password');


final response = await  http.get(url,  headers: {
          'X-Parse-Application-Id': kParseApplicationId,
          'X-Parse-REST-API-Key': kParseRestApiKey,
          'Content-Type': 'application/json'
          
          
          },);


final exData = jsonDecode(response.body);

print(exData);

但我有一些错误

在将您的个人数据发送到服务器时,不要使用 GET 方法。 GET 方法将数据发送到服务器,然后是 URL like append with URL request which will be seen像下面这样的每个人。

var url = Uri.parse('https://myshoppingapp.b4a.io/login/$username:$password');

这就是如何在 GET 方法中从 URL 读取您的个人数据。

'https://myshoppingapp.b4a.io/login/Mehran@metra.org:abcd12345'

对于登录请求,我们应该使用POST方法。因为我们的登录数据是安全的,需要安全性。当使用 POST 方法时,数据会打包发送到服务器。

 Future loginMethod(String username,String password) async {
       var res = await http.post(Uri.parse('https://myshoppingapp.b4a.io/login/'),
            body: {"username": username, "password": password});
        print('res : ${res.body}');
       
        
if (res.statusCode == 200){ final exData = jsonDecode(res.body);
    
    print(exData);
return res.body;
} else{
final exData = jsonDecode(res.body);
    
    print(exData);
return res.statusCode;
}
        
   }

用于 HTTP 基本身份验证

final loginUrl = Uri(scheme: 'https', host: 'example.com', port: 8080, userInfo: 'username:password')
http.get(loginUrl)

但不推荐通过 url 传递用户名和密码,因为它不安全。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#access_using_credentials_in_the_url

所以你应该使用 post 表单数据。