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

问题描述

我正在尝试为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编制索引

谢谢!

解决方法

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

遗憾的是,Gatsby不会运行任何类型的服务器来响应生产中的请求,因此,如果没有一些重要的技巧(例如默认情况下隐藏所有内容),就无法单独使用Gatsby来解决此问题被Google索引。