Next.js中间件部署后会话是否隔离?access token会被覆盖吗?
关于Next.js中间件会话与用户区分的问题
中间件的「会话」是单用户私有,而非全局共享
你自行编写的中间件部署后,不会出现所有用户共用一个会话的情况。因为httpOnly cookie是存储在用户各自的浏览器中的,每个用户的请求都会携带专属的cookie,中间件是针对单个请求独立处理的,不会在服务器端全局存储用户的access token(除非你自己错误地做了全局存储逻辑)。用户A的access token不会被用户B覆盖
用户A认证后,中间件将access token写入用户A浏览器的httpOnly cookie;用户B认证时,中间件操作的是用户B浏览器的cookie,两者完全独立,不存在互相覆盖的可能。中间件能否区分不同用户,取决于你的实现逻辑
只要你在中间件里通过读取当前请求携带的cookie来识别用户、获取对应access token,就能区分不同用户。比如在Next.js中间件中,通过request.cookies.get('access_token')拿到的是当前请求用户的token,这个值和当前请求绑定,不同用户的请求会携带不同的cookie值,自然就能区分开。反之,如果你的中间件错误地把access token存在服务器的全局变量里(比如Node.js的全局对象),才会出现所有用户共享同一个token、互相覆盖的问题,但这种做法本身就不符合会话管理的最佳实践。
内容的提问来源于stack exchange,提问作者a11smiles
相关产品推荐
相关产品推荐

