如何使用websocket连接请求授权和识别用户?

时间:2015-09-19 14:16:22

标签: javascript angularjs websocket

当我从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连接与特定用户关联。

我该如何解决这个问题?

0 个答案:

没有答案