【问题标题】:How to load a session by userid using node.js/express/passport/redis?如何使用 node.js/express/passport/redis 通过用户 ID 加载会话?
【发布时间】:2014-03-28 02:58:26
【问题描述】:

我有一个应用程序,它使用 redis 作为会话存储,使用护照进行身份验证,一切都在 express 之上。

当用户登录时,缓存中存储的对象的结构与此类似:

{
     cookie : {cookie info, expiration, etc},
     passport : { user : 'userid' }
}

我的问题是:是否有一种简单的方法可以通过仅提供“userid”字段来在 node.js 应用程序中加载该会话(或会话 ID)? (例如loadSession(userid)loadSession 返回会话 ID 或会话本身)。

首选原生 Passport/Express/Connect-Redis 替代方案。

我的意图是在给定时刻使某个会话无效,而不需要用户向我的应用发出 HTTP 请求,即没有req.session

提前致谢。

【问题讨论】:

  • 为什么不直接销毁缓存记录?
  • 因为我还不知道哪条记录包含我要删除的会话的userid。这就是我想要找出的内容
  • cookie 中没有 SID 吗?
  • 是的,但我正在尝试在没有该信息的情况下获取 sessionid。这就像,例如,用户(会话的所有者)有一个 master 有权结束用户的会话,只使用用户的 id。在这种情况下,会话可以在没有用户发出请求的情况下结束,因此不提供 cookie
  • 如果 userid 是你的全部,你需要添加 node-redis 模块并使用 userid 搜索记录 - 它不能用 connect-redis 来完成该模块实际上只是为会话处理而设计的。

标签: node.js session express passport.js


【解决方案1】:

如 cmets 中所述,如果您只有 userid,则需要添加 node-redis 模块并使用该 userid 搜索记录 - 这是无法使用 connect-redis 完成的单独,因为该模块仅设计用于会话处理。

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 2015-12-02
    • 2014-09-14
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2014-06-27
    • 1970-01-01
    相关资源
    最近更新 更多