【发布时间】:2022-02-01 15:23:24
【问题描述】:
我知道在页面组件中我可以做类似的事情
if(!isAuthenticated){
router.replace("/login")
}
但是,如果我的 95% 的路线需要登录,那么最好的方法是什么?我查看了中间件,但因为它在服务器端运行,所以我无法访问应用程序状态。
我是 React 和 Nextjs 的新手。我来自有角度的背景,这将通过路由保护来解决,Nextjs 中是否有类似的东西?
【问题讨论】:
-
可能是
MustBeAuthenticatedlayout 组件。 -
查看 react 中的协调概念——尝试按照 Brian 的建议使用根布局组件。您可以以强类型的方式从客户端上的服务器端访问数据(假设您使用的是来自 Angular 的打字稿)。从下一个导入
GetStaticPropsContext或GetServerSidePropsContext以及GetStaticPropsResult或GetServerSidePropsResult。然后,在任何非_*页面的默认导出中,您可以通过使用另一个下一个导入InferGetStaticPropsType<typeof getStaticProps>或InferGetServerSidePropsType<typeof getServerSideProps>来推断服务器道具 -
这是否回答了您的问题(检查客户端解决方案):How to create HOC for auth in Next.js??