websocket是一個永久性的開放連接。連接到WebSocket時,您只需要驗證一次。
只需將您的登錄cookie發送給node.js一次,並通過引用套接字連接將其存儲在服務器上。然後只處理來自已認證用戶的消息,並僅向經過認證的用戶進行廣播。
問題是客戶端用戶可以很容易地僞造這個cookie,因爲節點不會與php通話以確保它是有效的登錄cookie。
使用now的示例。
警告虛擬代碼
// server.js
everyone.now.joinChat = function(cookie) {
chat.add(this, cookie);
}
everyone.now.serverMessage = function(message) {
if (chat.hasUser(this)) {
chat.broadcast(message);
}
}
chat = (function() {
var users = [];
return {
"add": function(client) {
users.push(client);
},
"hasUser": function(client) {
return users.some(function(user) {
return user === client;
});
},
"broadcast": function(message) {
users.each(function(user) {
user.clientMessage(message);
});
}
}
}());
// client.js
$(function() {
now.joinChat($.cookie("login"));
$("#send").click(function() {
now.serverMessage($(this).data("message"));
});
now.clientMessage = function(message) {
$("#messages").append($("<span></span>").text(message));
}
});
的可能重複[Node.js的如何創建和讀取Express會話(HTTP答案:// stackoverflow.com/questions/5765777/node-js-how-to-create-and-read-session-with-express) – jmort253 2012-03-05 06:28:58