如何使用everyauth和nodejs持久保存用户标识信息

时间:2011-11-15 21:40:48

标签: node.js express everyauth

使用id参数调用

everyauth.everymodule.findUserById,Everyauth从req.session中获取该参数。然后,这可以用于加载传递给req.user

的用户信息

在重新启动节点app.js服务器的localhost上,会话被清除。

我想做的是设置一个cookie,其中包含我可以传递给Everyauth的用户ID,以便在服务器重启时它知道id和everymodule.findUserBy Id可以做到的。

我正在使用expressjs并且发现connect-mongodb和cookie-sessions都不起作用。那么建议的方法是什么呢?

换句话说,有没有一种方法可以用用户信息预先填充每个用户?

1 个答案:

答案 0 :(得分:3)

我认为您需要在expressjs之外设置持久会话存储。因为expressjs中的默认会话保留在内存中,所以当您重新启动服务器时它们会丢失。我最终使用connect-redis而不是connect-mongo,即使我使用MongoDb作为我的数据库。我希望会话数据与数据库分开。我不确定是否有必要,但设置起来非常简单。

此外,在我们讨论这个主题时,以下是我遇到的一些其他障碍:

  • 确保正确设置服务器时间,或者会话过早到期。
  • 在开发过程中遇到的一件事是会话由浏览器提供的用户代理字符串指纹识别的结果。我发现我在firefox(FirePHP,Firebug扩展)上启用了一个插件,该插件在第一次请求后修改了我的用户代理字符串。这导致会话表现得只有在浏览器关闭之前它们才有效。我花了几天的时间来追踪它。

希望这有帮助。