аутентификация пользователей / socket io
Я новичок в этом, я создаю игру, в которой пользователи должны войти и могут взаимодействовать друг с другом или с подмножеством других пользователей, вошедших в систему.
Моя первоначальная мысль заключается в том, что после того, как они войдут в систему, добавьте их/их идентификатор клиента websocket к массиву зарегистрированных в данный момент пользователей и пусть это будет то, чем я манипулирую, чтобы узнать, кто вошел в систему или нет.
Является ли это нормальным способом заниматься подобными вещами?
Спасибо!
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