Реализовать getSession() в NextJS 13

Я реализовал nextAuth в своем приложении и столкнулся с проблемой сбоя в пользовательском интерфейсе, когда страница перезагружается, я вижу Signed in as ../ Not signed in на секунду, пока не будет получен новый сеанс. Я нашел решение этой проблемы для NextJS 12 и старше, и у меня есть некоторые трудности с его реализацией в NextJS 13 без getServerSideProps().

'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

Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги &lt;ul&gt; и &lt;li&gt; для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
0
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
getServerSession: при вызове со стороны сервера, т. е. в маршрутах 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)
//...
}

Другие вопросы по теме