验证用户/套接字io

问题描述:

我是新手,我正在构建一个游戏,用户需要登录并且可以与其他当前登录的用户进行交互。验证用户/套接字io

我最初的想法是,他们登录后,将他们的/他们的websocket客户端ID添加到当前登录的用户数组,并有我操纵知道谁登录或不。

这是一个正常的方式去做这种事情吗?

谢谢!

取决于您对“正常”的定义。 ;-)

通常,您使用的服务器将提供一些管理“用户状态”的机制,包括用户是否已登录到您的应用程序。

例如,节点的“表达”库(和“连接”表达应用“下”)提供了一个req.session对象只是这个目的,所以你可以做这样的事情:

// 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.session.authorized是否为真,如果不是,则重定向到登录表单。

见明示的文档的更多的http://expressjs.com/guide.html

+0

登录用户的子集之间的通信如何?我会用一些快递的部分来识别它们吗?或在连接,当授权=真时,我会保存他们的客户端ID到我自己的对象在内存中,直到断开连接? – fancy 2011-05-11 20:28:06

+0

不知道您的要求,很难回答您的问题。对用户进行“分组”的一种可能方式可能是将标签添加到用户的记录中,以指示一个或多个组中的成员身份,当用户希望与其他组成员通信时可以使用该组。这可以很容易地与Redis的pub/sub功能相结合来处理群组间消息。 – 2011-05-12 16:53:29

刚刚找到最终的解决方案在这里:http://www.danielbaulig.de/socket-ioexpress/

它说明了如何使用会话无论是明示或node.js中 而且你可以使用redisStore进行永久会话(理想情况下,每分钟重启服务器3次:))

+1

虽然这可能在理论上回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。 – 2012-01-04 13:05:17