nodejs 的 sails 框架是如何处理 session 的?

2018-02-05 13:11:33 +08:00
 KillThunder

我现在有个问题:当用户登陆之后换一个浏览器再次登陆也能登录成功;我需要修改为第二次登录之后让第一次登录的强迫下线,于是我想到将 session 替换或者清除;可是我不知道 sails 中的 session 是在哪里工作的。各位 v 友帮忙看一下这个问题。在此感谢!

2143 次点击
所在节点    问与答
2 条回复
scarletmu
2018-02-05 14:00:21 +08:00
前一家厂干过这个事儿,sails 用的是 express 那套 session 模式,拿着 sessionID 去 store 里 destroy 掉之前的就可以,不过一下子忘了 sails 里怎么玩的...具体代码只有家里有备份了下班去看看
mdluo
2018-02-05 14:18:04 +08:00
https://sailsjs.com/documentation/reference/configuration/sails-config-session

> If left unspecified, Sails will use the default memory store bundled in the underlying session middleware. In production, you should specify the package name of a scalable session store instead (e.g. connect-redis). See below for details.

可见是跟你的配置有关系的,如果不配置默认是直接存内存里:

https://github.com/balderdashy/sails/blob/master/lib/hooks/session/index.js#L279

这里用到了 express-session,然后最终其实是存在了一个对象里:

https://github.com/expressjs/session/blob/master/session/memory.js#L42


推荐生产环境用 redis 来存,或者其实更好的方案是 cookie + jwt,当然这个文档里没提

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/428550

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX