next.js 下一个Auth getSession()返回undefined|零

1l5u6lss  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(83)

我有以下代码

export const useAxiosPrivate = () => {
  const { data, status } = useSession()
  const [accessToken, setAccessToken] = useState<string>()

  useEffect(() => {
    setAccessToken(() => data?.user.accessToken)
  }, [data])

  return axios.create({
    baseURL: `${SERVER_LOCALHOST}/api/v1`,
    headers: {
      'Content-Type': 'application/json',
      Authorization: `Bearer ${accessToken}`,
    },
  })
}

字符串
基本上,我不希望从session中提取的accesstoken为null,因为这将导致请求在authorization头中使用undefined发布...我试过这个

export const useAxiosPrivate = () => {
  const { data, status } = useSession()
  const [accessToken, setAccessToken] = useState<string>()

  useEffect(() => {
    setAccessToken(() => data?.user.accessToken)
  }, [data])

  if (status == 'authenticated') {
    return axios.create({
      baseURL: `${SERVER_LOCALHOST}/api/v1`,
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${accessToken}`,
      },
    })
  }
}


但它似乎不起作用。任何帮助都将不胜感激:)

bqujaahr

bqujaahr1#

我不知道你是否已经解决了,希望如此。我做了一个类似的代码给你,但它不去周围的useEffect(因为它会使事情去brrr)无论如何,我做了提取,使它正确工作(现在)是:

const { data: session, status } = useSession()
const Request = async () => {} //this is your fetch request
if(status === 'authenticated'){
   Request()  //you call the fetch function
}

字符串
我不知道为什么Next.js需要发出两个请求(第一个加载,第二个验证或未验证),因为第一个总是搞砸你的API调用,即使你在Provider上正确 Package 了你的代码。我的代码很容易解释。如果状态变为authenticated,那么它会调用API,数据可以保存在useState函数中,等等……还在尝试不同的方法来修复它或让它变得更好。。

相关问题