我使用NextAuth进行身份验证和URQL的authExchange。这样做的目的是在accessToken头中附加一个Authorization。
// ...
import { authExchange } from '@urql/exchange-auth'
import { getSession } from 'next-auth/react'
getAuth: async ({ authState }) => {
// for initial launch, fetch the auth state from storage (local storage, async storage etc)
if (!authState) {
const session = await getSession()
if (session && session.user.accessToken) {
return { token: session.user.accessToken }
}
return null
}
return null
},当我启动服务器时,它会打印[next-auth][error][CLIENT_FETCH_ERROR] https://next-auth.js.org/errors#client_fetch_error request to http://localhost:4200/api/auth/session failed, reason: connect ECONNREFUSED 127.0.0.1:4200。
这个错误是由getSession()引起的,但是为什么会发生这种情况呢?
发布于 2022-02-27 00:52:29
听起来好像NEXTAUTH_URL env变量没有设置,或者设置为不正确的url。您的本地dev server是否在localhost:4200上运行?
如果没有,则必须更新NEXTAUTH_URL env。
还请参阅https://next-auth.js.org/getting-started/example#extensibility有关如何使accessToken在会话状态中可用。在pages/api/auth/[...nextauth].js中的回调中还有一些工作要做,以便使您的accessToken在您期望的地方可用。
发布于 2022-03-30 07:28:23
我遇到了一个类似的问题,并意识到每当函数被称为客户端时,都会抛出错误。在这种情况下,没有请求对象,getSession函数会抛出一个错误。
如果存在req,我只向函数提供参数,从而阻止了错误:
const sessionProps = req ? { req } : undefined;
const session = await getSession(sessionProps);但是,对于我来说,由于某些原因,我仍然没有在会话中提供accessToken。在我的例子中,accessToken似乎没有附加到会话中。
https://stackoverflow.com/questions/71184918
复制相似问题