当我从JavaScript设置websocket连接时,如何授权它是服务器端的合法用户?我正在使用JSON Web Tokens,在对REST后端进行常规调用时,我会自动在AngularJS上添加Authorization:Bearer(JWT ..)标头,然后在服务器端检查是否有用户登录。我该怎么办?将连接升级到websocket连接时?我担心有些人连接到服务器请求websocket连接并欺骗一些用户id并接收他们的消息而不登录服务。
我请求这样的websocket连接:
var conn = new WebSocket("ws://localhost:8080/api/ws");
conn.onclose = function (e) {
console.log("disconnected");
};
conn.onopen = function (e) {
console.log("connected");
};
conn.onmessage = function (e) {
console.log(e.data);
};
第一部分是GET请求还是POST请求?我可以在网址中添加参数并在服务器端检查它们吗?例如:
var conn = new WebSocket("ws://localhost:8080/api/ws/token/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ");
或者这不是个好主意吗?我还认为发送JWT会是一个好主意,因为我可以从JWT中提取user_id并将websocket连接与特定用户关联。
我该如何解决这个问题?