1

everyauth.everymodule.findUserById 使用一个 id 参数调用,everyauth 从 req.session 获取该参数。然后可以使用它来加载传递给 req.user 的用户信息

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

我想做的是设置一个 cookie,其中包含我可以传递给everyauth 的用户 id,以便在服务器重新启动时它知道 id 并且everymodule.findUserBy Id 可以做它的事情。

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

换句话说,有没有办法用用户信息预先填充everyauth?

4

1 回答 1

3

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

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

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

希望这可以帮助。

于 2011-12-01T07:18:35.590 回答