我正在使用 Dart 服务器端 Aqueduct 框架。我的程序使用他们的 OAuth 2.0 Bearer 授权来保护某些路由。这工作正常。但是,当我尝试通过安全路由建立 websocket 连接时,我遇到了问题。这是代码:
router
.route("/connect")
.pipe(new Authorizer(authServer));
.listen((request) async {
var userID = request.authorization.resourceOwnerIdentifier;
var socket = await WebSocketTransformer.upgrade(request.innerRequest);
socket.listen((event) => handleEvent(event, fromUserID: userID));
connections[userID] = socket;
return null;
});
此代码直接取自 Aqueduct 网站:https ://aqueduct.io/docs/http/websockets/ 。
我的问题是,客户应该如何寻找这个?具体来说,在建立 websocket 连接时,如何在 HTTP 标头中设置授权。我尝试了很多不同的东西,包括以下内容:
void connect()
{
_address = "ws://$ip:$port/connect";
_webSocket = new WebSocket(_address, {"Authorization":"Bearer ks123..."});
}
和:
void connect()
{
_address = "ws://$ip:$port/connect&access_token=ks123...";
_webSocket = new WebSocket(_address);
}
和:
void connect()
{
_address = "ws://$ip:$port/connect&Authorization=Bearer ks123...";
_webSocket = new WebSocket(_address);
}
和:
void connect()
{
_address = "ws://$ip:$port/connect";
_webSocket = new WebSocket(_address, ["Authorization Bearer ks123.."]);
}
有谁知道如何解决这个问题?