我对此并不陌生,我正在开发一个游戏,用户需要登录并可以彼此交互,或者可以与其他当前登录用户的子集进行交互。

我最初的想法是,在他们登录后,将他们/他们的websocket客户端ID添加到当前登录用户的数组中,并以此作为我操纵以了解谁登录或不登录的方式。

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

谢谢!

最佳答案

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

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

例如,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();
});

然后,当您想向用户提供 protected 页面时,请首先检查req.session.authorized是否为true,否则,请重定向到登录表单。

有关http://expressjs.com/guide.html的更多信息,请参阅Express文档

10-05 20:36
查看更多