аутентификация пользователей / socket io



Я новичок в этом, я создаю игру, в которой пользователи должны войти и могут взаимодействовать друг с другом или с подмножеством других пользователей, вошедших в систему.



Моя первоначальная мысль заключается в том, что после того, как они войдут в систему, добавьте их/их идентификатор клиента websocket к массиву зарегистрированных в данный момент пользователей и пусть это будет то, чем я манипулирую, чтобы узнать, кто вошел в систему или нет.



Является ли это нормальным способом заниматься подобными вещами?



Спасибо!

682   2  

2 ответов:

Зависит от вашего определения "нормального". ;- )

Обычно сервер, который вы используете, предоставляет некоторый механизм для управления "состоянием пользователя", в том числе независимо от того, вошел ли пользователь в ваше приложение.

Например, библиотека 'express' узла (и 'connect', который express использует 'underneath') предоставляет req.объект сеанса только для этой цели, так что вы можете делать такие вещи, как:

// user login via POST
//   assumes we're posting two values: username and password
//   as urlencoded data

app.post('/login',function(req,res){

  var username=req.body['username']||'',
      password=req.body['password']||'';

  // check post data (username,password) 
  // against list of allowed users

  if(isAuthorized(username,password)) { // you provide isAuthorized()
    req.session.authorized=true;
  }
  else {
    // display an error message to user
    // and redirect back to the login form
  }
});

// user logout via GET
app.get('/logout',function(req.res){
  req.session.destroy();
});

Затем, когда вы хотите предоставить защищенные страницы пользователю, сначала проверьте req.сессия.уполномоченный верно, а если нет, то перенаправить на форму входа в систему.

См. Docs для Express для более http://expressjs.com/guide.html

Только что нашел окончательное решение здесь: http://www.danielbaulig.de/socket-ioexpress/

Он объясняет, как использовать сеансы либо в express, либо в node.JS. И вы можете использовать redisStore для постоянных сеансов (идеально, когда вы перезапускаете сервер 3 раза в минуту :))

Comments

    Ничего не найдено.