सॉकेट.io का उपयोग करके, मैंने इसे सरल तरीके से किया है। मुझे लगता है आप अपने आवेदन के लिए एक वस्तु है के MrBojangle मान लीजिए, मेरा के लिए यह Shished कहा जाता है:
/**
* Shished singleton.
*
* @api public
*/
function Shished() {
};
Shished.prototype.getHandshakeValue = function(socket, key, handshake) {
if(!handshake) {
handshake = socket.manager.handshaken[ socket.id ];
}
return handshake.shished[ key ];
};
Shished.prototype.setHandshakeValue = function(socket, key, value, handshake) {
if(!handshake) {
handshake = socket.manager.handshaken[ socket.id ];
}
if(!handshake.shished) {
handshake.shished = {};
}
handshake.shished[ key ] = value;
};
आपके प्राधिकरण की पद्धति पर
फिर, मैं सत्र के भंडारण के लिए MongoDB उपयोग कर रहा हूँ:
io.set('authorization', function(handshake, callback) {
self.setHandshakeValue(null, 'userId', null, handshake);
if (handshake.headers.cookie) {
var cookie = connect.utils.parseCookie(handshake.headers.cookie);
self.mongoStore()
.getStore()
.get(cookie['connect.sid'], function(err, session) {
if(!err && session && session.auth && session.auth.loggedIn) {
self.setHandshakeValue(null,
'userId',
session.auth.userId,
handshake);
}
});
}
फिर से पहले मॉडल में एक रिकॉर्ड की बचत, आप कर सकते हैं:
model._author = shished.getHandshakeValue(socket, 'userId');
मैं जो कर रहा हूं वह सिर्फ प्रत्येक उपयोगकर्ता को लॉगिन पर और इसे काफी बार बदल रहा था, फिर सॉकेट संदेशों में इसका उपयोग करके यह सत्यापित करने के लिए कि वे वास्तव में थे जिन्होंने कहा था कि वे थे। – MrBojangles