Next.js 将getServerSideProps函数放在助手中
在这里 我想使用firebase管理方法保护许多页面:Next.js 将getServerSideProps函数放在助手中,next.js,getserversideprops,Next.js,Getserversideprops,在这里 我想使用firebase管理方法保护许多页面: const getServerSideProps = async (ctx: GetServerSidePropsContext) => { try { const cookies = nookies.get(ctx); const token = await firebaseAdmin.auth().verifyIdToken(cookies.token); const { uid, email } =
const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
try {
const cookies = nookies.get(ctx);
const token = await firebaseAdmin.auth().verifyIdToken(cookies.token);
const { uid, email } = token;
return {
props: {
email,
uid,
},
};
} catch (err) {
return {
redirect: {
permanent: false,
destination: "/",
},
props: {} as unknown as never,
};
}
};
const ExpertPage = (
props: InferGetServerSidePropsType<typeof getServerSideProps>,
) => {
return (
<Layout type={ILayoutType.EXPERT}>
<ProtectedPage1 props={props} />
</Layout>
);
};
export default ExpertPage;
const getServerSideProps=async(ctx:GetServerSidePropsContext)=>{
试一试{
const cookies=nookies.get(ctx);
const token=wait firebaseAdmin.auth().verifyIdToken(cookies.token);
const{uid,email}=token;
返回{
道具:{
电子邮件,
uid,
},
};
}捕捉(错误){
返回{
重定向:{
永久性:假,
目的地:“/”,
},
道具:{}从未有过的未知,
};
}
};
const ExpertPage=(
props:InferGetServerSidePropsType,
) => {
返回(
);
};
导出默认ExpertPage;
如您所见,应该在所有这些页面上调用函数getServerSideProps
,这是我想要避免的
我试图在助手中移动它,以便在此处仅将其作为类型调用InferGetServerSidePropsType
但它没有运行。我想知道是否有更好的方法来做这件事这是否有助于回答您的问题:?您可以创建一个包装器函数,在所有页面的
getServerSideProps
函数上调用它。