验证用户/套接字io

时间:2011-05-10 21:21:15

标签: javascript authentication node.js websocket socket.io

我是新手,我正在构建一个用户需要登录并可以互相交互的游戏,或者是其他当前登录用户的子集。

我最初的想法是,在他们登录后,将他们/他们的websocket客户端ID添加到当前登录用户的数组中,然后让我操作以了解谁登录了。

这是一种正常的做这种事情的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

例如,Node的'express'库(以及表示使用'underneath'的'connect')为此提供了一个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

上的更多文档

答案 1 :(得分:1)

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

它解释了如何在express或node.js中使用会话。 并且您可以使用redisStore进行持久会话(非常适合每分钟重启服务器3次)。)