我正在开发一个需要身份验证和会话控制的Dart应用程序。我尝试使用shelf_auth来做到这一点,但这些示例似乎不起作用,或者更有可能的是,我没有以正确的方式实现它们。
简而言之,这就是我想要发生的事情:
包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();
});
}
答案 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
。