如何在nextjs13中获取客户端当前用户

siv3szwd  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(208)

我使用next 13 new app dir和nextAuth。
下面的代码在服务器端成功返回了currentUser,但在客户端却没有!

import { getServerSession } from "next-auth/next";

import prisma from "@/app/hooks/libs/prismadb";
import { authOptions } from "@/pages/api/auth/[...nextauth]";

export async function getSession() {
  return await getServerSession(authOptions)
}

export default async function getCurrentUser() {

  try {
    const session = await getSession();
    if (!session?.user?.email) {
      return null;
    }

    const currentUser = await prisma.user.findUnique({
      where: {
        email: session.user.email as string,
      }
    });

    if (!currentUser) {
      return null;
    }

    return currentUser

  } catch (error: any) {
    return null;
  }

}

那么,客户端如何获取currentUser?

tjjdgumg

tjjdgumg1#

在顶级根布局中,使用SessionProvider将其 Package 起来

<SessionProvider>
  <Navbar />
  <main>{children}</main>
</SessionProvider>

然后在任何客户端组件中

import { useSession } from "next-auth/react";

const {data:session}=useSession()

相关问题