NextJS 静态 SSG 认证
Posted
技术标签:
【中文标题】NextJS 静态 SSG 认证【英文标题】:NextJS static SSG authentication 【发布时间】:2021-08-11 05:03:37 【问题描述】:用例
我正在创建一个付费博客网站,人们可以在该网站上向博主付费以查看他们的博客。
我选择的解决方案
我选择了 NextJS 来构建静态内容(SSG)。使用后备选项,静态内容也可以在站点部署后构建。
问题
现在,问题是身份验证。我们无法验证服务器上的任何传入请求,例如 s-s-r。
检查身份验证的唯一方法是在客户端。使用useEffect
钩子检查当前用户是否经过身份验证。
但是,这种方法的问题在于,任何用户都可以在客户端禁用javascript
来查看内容。
有没有办法在服务器端验证 SSG 页面请求。
我不想使用 s-s-r,因为会增加成本。
【问题讨论】:
【参考方案1】:您可以使用名为 Auth0 的服务来实现静态站点身份验证。它每月最多免费提供数千个请求,并且具有您可以使用的 React 组件。确保遵循 auth0-react 而不是 nextjs-auth0 的教程(这是针对 s-s-r)。
这里是 Auth0 的链接:https://auth0.com/
【讨论】:
【参考方案2】:如果用户在 SSG 上进行身份验证,您可以返回 null
。如果您不通过 API 加载任何内容,那么用户将能够在代码中看到它(但没有多少用户会这样做)。如果您还没有设法解决此问题,现在可以选择 Vercel Edge Functions。
【讨论】:
以上是关于NextJS 静态 SSG 认证的主要内容,如果未能解决你的问题,请参考以下文章
在 NextJS 应用程序中使用 React Context API 会禁用静态站点生成器吗?
错误:动态 SSG 页面需要 getStaticPaths,而“xxx”缺少 getStaticPaths。 NextJS