-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Description
注意到上面两个中间件,假设分别为中间件a和中间件b
注意到ctx是从app中获取,当同一时间有多个请求进入,app是个单例,this.ctx = ctx会被让app.ctx被覆盖掉,后面再使用app.ctx可能是上一个客户端的信息。
举例:
用户A -> 发请求 -> 进入中间件a(用户a) ->进入中间件b(用户a)
用户B -> 发请求 -> 进入中间件a(用户b) ->进入中间件b(用户b)
在同一时间的并发下最终的结果可能是:
用户A、用户B同时发请求->进入中间a(用户a)->进入中间a(用户b)(这里app.ctx被覆盖)->进入中间件b(用户a)(此时从app.ctx已经是用户b的请求信息,比如app.ctx.cookies已经变成b用户的cookie了,造出处理混乱,返回值错乱)->进入中间b(用户b)(b用户的返回值是正确的)
因为我在您的项目上面改动一些东西,出现了这个bug,可能您的项目暂时没有这个bug,但是这可能是一个风险点,我觉得可以注意一下。
联系方式:wx:gy668991
Metadata
Metadata
Assignees
Labels
No labels