【问题标题】:Pass the username and password in URL parameters (Dart & Flutter)在 URL 参数中传递用户名和密码 (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);

但我有一些错误

【问题讨论】:

    标签: json flutter dart parse-platform back4app


    【解决方案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 来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      相关资源
      最近更新 更多