【发布时间】:2020-01-15 13:52:10
【问题描述】:
我有一个 Next.js(修复可能不一定与 Next.js 有任何关系)应用程序,我想限制一些导航。 This page 在 Next.js 文档中提到“你应该防止导航到你不想要的路线”,但我不确定如何做到这一点。假设我有以下页面:
/bikes
/boats
/cars
我只想让用户看到/bikes。我怎么能做到这一点。我能够从不需要的页面重定向到可接受的页面,但只有在不需要的页面加载之后。有没有办法在此之前重定向(也许通过在更改 URL 后立即更改)?
【问题讨论】:
-
在文档中有很好的解释:使用
useFileSystemPublicRoutes禁用文件系统路由(SSR),在客户端使用Router.beforePopState。 -
我猜如果你禁用文件系统路由,你需要一个自定义服务器。
-
我设法通过使用自定义服务器来完成这项工作。
-
我通过修改
_document.tsx并在getInitialProps函数中添加一些控制流来实现这一点。对于我的大部分私有路由逻辑,我不需要访问数据库,我只需要验证 cookie 的存在。如果您确实需要访问数据库进行身份验证,它可能会显着减慢您的页面加载速度。
标签: javascript reactjs typescript url next.js