这里。
我想使用 firebase 管理方法保护许多页面:
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;
如您所见,应该在所有这些页面上调用函数 getServerSideProps
,这是我想要避免的。
我试图将它移动到一个助手中,以便在此处将其称为类型InferGetServerSidePropsType<typeof getServerSideProps>
但它没有运行。我想知道是否有更好的方法