首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从next-auth和@urql/exchange-auth使用getSession附加getSession

从next-auth和@urql/exchange-auth使用getSession附加getSession
EN

Stack Overflow用户
提问于 2022-02-19 12:17:02
回答 2查看 1K关注 0票数 0

我使用NextAuth进行身份验证和URQL的authExchange。这样做的目的是在accessToken头中附加一个Authorization

代码语言:javascript
复制
// ...
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()引起的,但是为什么会发生这种情况呢?

EN

回答 2

Stack Overflow用户

发布于 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在您期望的地方可用。

票数 0
EN

Stack Overflow用户

发布于 2022-03-30 07:28:23

我遇到了一个类似的问题,并意识到每当函数被称为客户端时,都会抛出错误。在这种情况下,没有请求对象,getSession函数会抛出一个错误。

如果存在req,我只向函数提供参数,从而阻止了错误:

代码语言:javascript
复制
  const sessionProps = req ? { req } : undefined;
  const session = await getSession(sessionProps);

但是,对于我来说,由于某些原因,我仍然没有在会话中提供accessToken。在我的例子中,accessToken似乎没有附加到会话中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71184918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档