【发布时间】: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