在 Next.js 中,您可以选择服务器端渲染 (SSR)或静态站点生成 (SSG)。在整个Next.js 文档和社区中,出于性能原因,建议使用 SSG 而非 SSR。
我有一个 Next.js 构建,它在整个应用程序中使用 SSG,getStaticProps()通过与外部 CMS (Prismic) 集成,在构建时使用等生成内容/页面。我更喜欢这个,因为如前所述,它提供了性能提升,而且大多数代码库然后可以使用相同的数据获取策略(在构建时)。
但是,其中一些页面需要受到保护——这意味着它们只能由经过身份验证的用户访问。我们正在使用 Auth0 生成 JWT 令牌,并在 API 调用中验证令牌后让 React 上下文提供程序保存用户的状态(已登录或未登录)。
但是,令我震惊的是,我似乎没有使用此令牌保护 SSG 页面的好方法。推荐的方式在这里令我奇怪,因为据我可以告诉这是一个客户端重定向,可以通过客户端(被操纵的例子-客户端可以操纵它的局部状态/上下文或其他篡改无论是从返回notloggedincondition) 以显示静态内容或以其他方式使重定向短路。
作为参考,这是该代码的粘贴:
import {useEffect} from 'react'
import {useRouter} from 'next/router'
export async function getStaticProps() {
return {
props: {
hello: 'Hello World'
}
}
}
export default (props) => {
const router …Run Code Online (Sandbox Code Playgroud)