SORU
20 Ocak 2011, PERŞEMBE


Yuva.IO kimlik Doğrulama

Soket kullanmaya çalışıyorum.İO Node.js ve sunucu Soket her biri için bir kimlik vermek için izin vermek için çalışıyorum.IO müşteriler. Gibi soket kod kapsamı dışında kalan http Sunucusu kodu, yok kolay erişim için istek bilgi gönderdi, ben varsayarak gerekecektir yolladı sırasında bağlantı. Ne için en iyi yoldur

1) Soketi üzerinden bağlanan hakkında sunucuya bilgi alabilirsiniz.IO

2) söyledikleri (kim şu anda ise bu işleri daha kolay yapar Express kullanıyorum) kimlik doğrulaması

CEVAP
21 Ocak 2011, Cuma


Kullan-redis bağlayın ve tüm kimliği doğrulanmış kullanıcılar için oturum deposu olarak redis var. Anahtar (normalde ger.gönderdiğiniz kimlik emin olun sessionıd) istemci. İstemci bir kurabiye bu anahtar deposu var.

Soket bağlantı (ya da her zaman) sonra çerez bu anahtar getir ve sunucuya geri gönderir. Oturum redis bu anahtarı kullanarak bilgi getir. () Anahtar

Örneğin:

Sunucu tarafı (redis olarak oturum deposu ile):

req.session.regenerate...
res.send({rediskey: req.sessionID});

İstemci tarafı:

//store the key in a cookie
SetCookie('rediskey', <%= rediskey %>); //http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx

//then when socket is connected, fetch the rediskey from the document.cookie and send it back to server
var socket = new io.Socket();

socket.on('connect', function() {
  var rediskey = GetCookie('rediskey'); //http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx
  socket.send({rediskey: rediskey});
});

Sunucu tarafı:

//in io.on('connection')
io.on('connection', function(client) {
  client.on('message', function(message) {

    if(message.rediskey) {
      //fetch session info from redis
      redisclient.get(message.rediskey, function(e, c) {
        client.user_logged_in = c.username;
      });
    }

  });
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dcigs

    dcigs

    9 EYLÜL 2006
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006