首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
V2EX  ›  Node.js

Nodejs Session 问题(express-session)

  •  
  •   DongZhe93 · 91 天前 · 644 次点击
    这是一个创建于 91 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景:用户登录后,同时请求 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
        1
    123s   90 天前
    代码都没有,谁知道你怎么写。
    你的 session 是存哪的
        2
    DongZhe93   90 天前
    @123s 直接存在内存里面,req.session.permission 方式
        3
    cqu1980   90 天前
    肯定了,服务器都还没把处理好的数据保存了,你就去读取,哪里读得到~~~~
        4
    nealv2ex   90 天前   ♥ 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 输出
        5
    DongZhe93   90 天前
    @nealv2ex 不只是 B、C,后续的请求都获取不到
        6
    keven2000   89 天前
    业务量多的话,还是要考虑有一个专门的认证服务
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3158 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 44ms · UTC 05:00 · PVG 13:00 · LAX 21:00 · JFK 00:00
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1