我正在使用Dart服务器端Aqueduct框架。我的程序使用其OAuth 2.0承载授权来保护某些路由。这很好用。但是,当我尝试通过安全路由建立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.."]);
}
有谁知道如何解决这个问题?