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

SSG和s-s-r如何选择?

Next.js SSG 的正确 .htaccess 配置

作为道具传递与提取缓存 Apollo 客户端 Nextjs

电容器中的 NextJS s-s-r