在NextJS 13中实现getSession()

rkttyhzu  于 2023-02-15  发布在  其他
关注(0)|答案(1)|浏览(168)

我在我的应用程序中实现了nextAuth,但在UI上遇到了一个小故障问题,当页面重新加载时,我可以看到Signed in as ../ Not signed in一秒钟,直到获取新的会话。我找到了NextJS 12和更早版本的此问题的解决方案,我在没有getServerSideProps()的NextJS 13中实现此问题有一些困难。

'use client'
import './globals.css'
import { getSession, SessionProvider } from 'next-auth/react'

export default function RootLayout({ session, children }) {
  return (
    <html lang="en">
      <head />
      <body>
        <SessionProvider session={session}>
          {children}
        </SessionProvider>
      </body>
    </html>
  )
}

上面的代码如何实现这个函数?

export async function getServerSideProps(ctx) {
  return {
    props: {
      session: await getSession(ctx)
    }
  }
}

来源:https://stackoverflow.com/a/68942471/4655668

ee7vknir

ee7vknir1#

获取服务器会话:当从服务器端调用时,即在API路由或getServerSideProps中调用时,我们建议使用此函数而不是getSession来检索会话对象。当您将NextAuth.js与数据库一起使用时,此方法特别有用。

import { authOptions } from 'pages/api/auth/[...nextauth]'
import { getServerSession } from "next-auth/next"

export async function getServerSideProps(context) {
  const session = await getServerSession(context.req, context.res, authOptions)
//...
}

相关问题