如何在Auth 0 nextjs-auth 0库中的useUser()查找用户而不阅读cookie?

idfiyjo8  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(134)

Auth0's useUser()尝试从/api/auth/me获取登录用户,/api/auth/me调用handleAuth()handleAuth()启动Auth 0(创建sessionCache示例等)并调用profileHandler(req, res)
profileHandler中,我们可以看到对sessionCache.isAuthenticated(req, res)的调用,sessionCache.isAuthenticated(req, res)反过来检查sessionCache示例中是否存在以前的会话条目(密钥:req对象,值:包含用户信息、access_token、id_token等的加密对象)。
由于每个API调用,即每个handleAuth()的调用,无论是来自/api/auth/me/api/auth/login还是其他,都是一个单独的无服务器函数调用,那么profileHandler/api/auth/me)真的会在sessionCache中找到一个条目吗?
我知道我们在登录时添加了一个条目(在callbackHandler中),但我不明白缓存值如何在两个单独的无服务器函数调用之间保持不变。
nextjs-auth 0在文档中声明:
默认情况下,会话是无状态的,并存储在加密的cookie中。但是如果你想要一个有状态的会话,你可以提供一个带有getsetdestroy方法的存储来将会话存储在服务器上。
我们知道它是无状态的。

relj7zay

relj7zay1#

我不明白缓存值如何在两个单独的无服务器函数调用之间保持。
会话存储在一个cookie中,每个单独的Serverless Function调用都会读取该cookie并填充sessionCache(它将会话存储在每个请求的WeakMap中)。sessionCache只是为了确保您可以在单个请求的生命周期中多次访问会话,而不必每次都读取/解密cookie。

相关问题