V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DongZhe93
V2EX  ›  Node.js

Nodejs Session 问题(express-session)

  •  
  •   DongZhe93 · 2018-11-21 10:38:51 +08:00 · 3493 次点击
    这是一个创建于 2187 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景:用户登录后,同时请求 A,B,C 三个接口(并发); A 接口是获取用户的权限,同时我在服务器存了一份到 req.session 中,用于后续请求校验(防止多个用户绕过菜单请求)。
    现象:A 接口虽然存了数据,但是后续请求发现 req.session 中没有权限数据了。
    暂时处理方式:同时请求 A,B,C 改为先请求 A,再在回调中请求 B,C 接口,目前这样请求后续请求可以正常获取到 req.session ;
    ps 思路(不知道对不对):Express 多个请求处理,之前的 req.session 是否会被请求 B,C 的覆盖掉?!有相关资料可以提供吗?
    6 条回复    2018-11-22 21:24:58 +08:00
    123s
        1
    123s  
       2018-11-21 14:04:48 +08:00
    代码都没有,谁知道你怎么写。
    你的 session 是存哪的
    DongZhe93
        2
    DongZhe93  
    OP
       2018-11-21 17:19:26 +08:00
    @123s 直接存在内存里面,req.session.permission 方式
    cqu1980
        3
    cqu1980  
       2018-11-21 17:25:36 +08:00
    肯定了,服务器都还没把处理好的数据保存了,你就去读取,哪里读得到~~~~
    nealv2ex
        4
    nealv2ex  
       2018-11-21 17:30:12 +08:00   ❤️ 1
    同时请求 A,B,C 接口
    A 接口存到 session,“但是后续请求发现 req.session 中没有权限数据” 这个后续 是 B 和 C 么?
    如果是 B 和 C,那么 A,B,C 是同时请求的,A 写入权限的时候,大概率,B 和 C 已经过了读取 req.session 的时机,你读不到。

    express A 接口 做的 权限读取,判断,以及存储到 req.session 应该做成中间件, 每个接口都需要经过一遍这个中间件的处理,而不是 A 接口 读权限,存权限,A 接口要做的事情,其实只有一件事,把 req.session 里面的 session 输出
    DongZhe93
        5
    DongZhe93  
    OP
       2018-11-21 22:09:50 +08:00
    @nealv2ex 不只是 B、C,后续的请求都获取不到
    keven2000
        6
    keven2000  
       2018-11-22 21:24:58 +08:00
    业务量多的话,还是要考虑有一个专门的认证服务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2600 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:41 · PVG 18:41 · LAX 02:41 · JFK 05:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.