希望更好地理解如何使用这样的函数,以便获得会话信息,甚至考虑在哪里放置我的导航组件。
目前,我的导航嵌套在_app. js文件中
<NavBar />
<Component {...pageProps} />
我正试图从服务器获取会话信息,因为我希望确保导航根据用户会话信息显示登录/注销,例如
export async function getServerSideProps(context) {
console.log("index getting session");
try {
const session = await getSession(context);
return {
props: {
session,
},
};
} catch (error) {
return {
props: {
session: null,
},
};
}
}
P.S -顶部的console.log()未运行
这是不正确的吗?如果有人有更好的建议,或者我应该把我的导航,以确保它可以执行getServerSideProps的认证目的。
感谢所有的帮助。花了一天多的时间在上面,许多人向我指出了Next-Auth问题的方向,例如NEXT_PUBLIC_SECRET
未正确设置或NEXTAUTH_URL
未正确设置,但我觉得可能是getServerSideProps
1条答案
按热度按时间iq0todco1#
您不能在 * App.js * 文件中调用
getServerSideProps
,请查看此处稍后将介绍它,但我们需要弄清楚语义,因为我们真的不希望getServerSideProps in _app选择退出所有页面的静态生成
如果你想让导航根据用户会话信息显示登录/注销,那么一个解决方案是从
<NavBar/>
组件调用会话,你不必从服务器端调用它并将其传递给一个组件,你可以简单地利用useSession()
并从<NavBar/>
组件内部调用它以访问会话数据。使用会话()
客户端:是的
服务器端:不想
NextAuth.js客户端中的useSession()React Hook是检查某人是否登录的最简单方法。
确保已添加到pages/_app.js
现在,基于
status
,您可以决定在JSX中显示什么按钮:如果你想从服务器组件访问会话,你必须使用
getServerSession()
方法。