V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KillThunder
V2EX  ›  问与答

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

  •  
  •   KillThunder · 2018-02-05 13:11:33 +08:00 · 2135 次点击
    这是一个创建于 2468 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    2 条回复    2018-02-05 14:18:04 +08:00
    scarletmu
        1
    scarletmu  
       2018-02-05 14:00:21 +08:00   ❤️ 1
    前一家厂干过这个事儿,sails 用的是 express 那套 session 模式,拿着 sessionID 去 store 里 destroy 掉之前的就可以,不过一下子忘了 sails 里怎么玩的...具体代码只有家里有备份了下班去看看
    mdluo
        2
    mdluo  
       2018-02-05 14:18:04 +08:00   ❤️ 1
    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,当然这个文档里没提
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2827 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:37 · PVG 21:37 · LAX 05:37 · JFK 08:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.