Dart语言:身份验证和会话控制(shelf_auth)

时间:2015-05-26 18:22:15

标签: session authentication dart

我正在开发一个需要身份验证和会话控制的Dart应用程序。我尝试使用shelf_auth来做到这一点,但这些示例似乎不起作用,或者更有可能的是,我没有以正确的方式实现它们。

简而言之,这就是我想要发生的事情:

  1. 用户在浏览器上打开应用程序。
  2. 用户输入登录信息(登录名和密码),这些信息将发布到服务器。
  3. 如果提供的信息有效,则应用程序会生成会话代码,该会话代码将传递到客户端并存储在DB(服务器端)上。此代码将随每个事务一起发送到服务器端。
  4. 包shelf_auth有一些例子,但我不知道应该遵循哪一个。所以我的问题是:我怎么能用shelf_auth做到这一点?我不是要求任何人为我编写代码,而只是指出我正确的方向。

    编辑:我尝试的例子是:example_with_login_and_jwt_session.dart。似乎它缺少CORS标题(this question帮助我修复它),甚至提供有效信息,它会响应" Unauthorized"。

    这就是我发布信息的方式:

    import "dart:html";
    
    void main() {
        Map _queryParameters = {
            "username": "fred",
            "password": "blah"
        };
        var _button = querySelector("#login_button");
        _button.onClick.listen((MouseEvent e) {
            e.preventDefault();
            var requisition = new HttpRequest();
            Uri uri = new Uri(path: "http://localhost:8080/login", queryParameters: _queryParameters);
            requisition.open("POST", uri.toString());
            requisition.setRequestHeader("content-type", "application/x-www-form-urlencoded");
            requisition.onLoadEnd.listen((_) {
                print(requisition.response.toString());
            });
            requisition.send();
        });
    }
    

1 个答案:

答案 0 :(得分:0)

我使用此客户端代码

import "dart:html";

void main() {
  Map _queryParameters = {"username": "fred", "password": "blah"};
  var _button = querySelector("#login_button");
  _button.onClick.listen((MouseEvent e) async {
    e.preventDefault();
    var requisition = new HttpRequest();
    Uri uri = new Uri(
        path: "http://localhost:8080/login/");
    requisition.onLoadEnd.listen((_) {
      print(requisition.response.toString());
    });
    HttpRequest request = await HttpRequest.postFormData(
        "http://localhost:8080/login/", _queryParameters
        //,withCredentials: true
        );
    print(request.response);
  });
}

示例服务器需要正文中的凭据而不是查询参数,并设置withCredentials: true,因此身份验证cookie随请求一起发送。工作时没有withCredentials

相关问题