Nodejs Session 问题(express-session)

2018-11-21 10:38:51 +08:00
 DongZhe93
场景:用户登录后,同时请求 A,B,C 三个接口(并发); A 接口是获取用户的权限,同时我在服务器存了一份到 req.session 中,用于后续请求校验(防止多个用户绕过菜单请求)。
现象:A 接口虽然存了数据,但是后续请求发现 req.session 中没有权限数据了。
暂时处理方式:同时请求 A,B,C 改为先请求 A,再在回调中请求 B,C 接口,目前这样请求后续请求可以正常获取到 req.session ;
ps 思路(不知道对不对):Express 多个请求处理,之前的 req.session 是否会被请求 B,C 的覆盖掉?!有相关资料可以提供吗?
3311 次点击
所在节点    Node.js
6 条回复
123s
2018-11-21 14:04:48 +08:00
代码都没有,谁知道你怎么写。
你的 session 是存哪的
DongZhe93
2018-11-21 17:19:26 +08:00
@123s 直接存在内存里面,req.session.permission 方式
cqu1980
2018-11-21 17:25:36 +08:00
肯定了,服务器都还没把处理好的数据保存了,你就去读取,哪里读得到~~~~
nealv2ex
2018-11-21 17:30:12 +08:00
同时请求 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
2018-11-21 22:09:50 +08:00
@nealv2ex 不只是 B、C,后续的请求都获取不到
keven2000
2018-11-22 21:24:58 +08:00
业务量多的话,还是要考虑有一个专门的认证服务

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

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

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

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

© 2021 V2EX