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

Posted

技术标签:

【中文标题】在 URL 参数中传递用户名和密码 (Dart & Flutter)【英文标题】:Pass the username and password in URL parameters (Dart & Flutter) 【发布时间】:2021-09-03 03:56:03 【问题描述】:

我有一个颤振应用程序,我正在使用 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);

但我有一些错误

【问题讨论】:

【参考方案1】:

在将您的个人数据发送到服务器时,请勿使用 GET 方法。 GET 方法将数据发送到服务器,然后是 URL,例如附加 URL 请求,每个人都可以看到,如下所示。

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;

        
   

【讨论】:

但在 Parse 文档中,他们为登录用户说正确的方法是 GET No @DrBody 对于登录请求,我们应该使用 POST 方法。因为我们的登录数据是安全的,需要安全性。使用 POST 方法时,数据以捆绑的形式发送到服务器。但是在 GET 方法中,数据被发送到服务器,然后是 URL,例如 append with url request,每个人都可以看到。 非常感谢您的帮助我正在使用 POST 方法登录,现在可以使用了。 如果您使用 get,您应该将用户名和密码作为 URL 编码参数传递:【参考方案2】:

用于 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 formdata 来做到这一点。

【讨论】:

以上是关于在 URL 参数中传递用户名和密码 (Dart & Flutter)的主要内容,如果未能解决你的问题,请参考以下文章

在 GatsbyJS 上获取 URL 参数

iFrame 使用 PHP 在 URL 中传递用户名和密码

如何在jasper中传递用户名和密码以及json数据源URL

Pentaho:直接链接到插件的用户名和密码参数

四种参数传递的形式——URL,超链接,js,form表单

***四种参数传递的形式——URL,超链接,js,form表单