在 Gatsby 中,如何在不显示内容的情况下将经过身份验证的用户从主页 / 重定向到 /app?

In Gatsby, how do I redirect authenticated users from the homepage / to /app without a flash of content?

我正在尝试为 Web 应用程序实现通用用户体验,其中经过身份验证的用户会自动从主页重定向到应用程序。

例如,在浏览器中输入 https://example.com/ 时,如果我没有登录,我会看到主页。但是如果我登录了,我会自动重定向到 https://example.com/app/

目前我的 pages/index.js 中有这个:

if (auth.user) return <Redirect noThrow from="/" to="/app" />;

其中 Redirect 来自@reach/router.

但是,当我这样做时,未经身份验证的主页会在重定向开始之前短暂闪烁。有没有办法做到这一点:

  1. 在重定向发生之前没有内容闪烁并且
  2. 主页仍然是静态生成的,因此 Google 为 SEO
  3. 正确索引了它

谢谢!

您需要您的服务器使用 301–303 响应代码和指向所需 URL 的 Location header 来响应主页请求(例如 /app/).

Gatsby 没有 运行 任何类型的服务器来响应生产中的请求,唉,所以你不能单独使用 Gatsby 解决这个问题,除非有一些重大的黑客攻击,比如默认隐藏你的所有内容,这将导致没有内容被 Google.

索引