4

这是我的应用程序当前处理维护过程的方式:

我有一个应用程序状态的环境变量:

REACT_APP_SITE_MODE=“LIVE” | “MAINTENANCE”

react-router用于路由应用程序:

switch (process.env.REACT_APP_SITE_MODE) {
  case "MAINTENANCE":
    return (
      <Switch>
        <Route component={MaintenancePage} />
      </Switch>
    );
  default:
    return (
      <Switch>
        {/* Default routes */}
      </Switch>
    );
}

这工作正常,但是当我们将其切换到维护模式时,一些用户仍然可以使用默认路由访问应用程序(这在后端关闭时不好),我认为这是因为浏览器缓存或其他原因。

我的问题是:

  1. 如何防止用户在维护期间访问应用程序?(强迫他们在特定时间清除缓存?)
  2. 有没有更好的方法来处理维护过程?

谢谢。

4

1 回答 1

3

我认为你最好的选择是拥有 BE 和 FE 的维护状态:

  • 对于BE来说,在维护期间,每当有请求到来时,总会返回一个具体的错误码,FE会理解。
  • 对于 FE,保持你现在的实现,另外,在你的 API 请求中添加一个中间件来检测它是否有你定义的错误代码的响应,它将重定向回你的维护页面。

所以在有浏览器缓存的情况下(你的场景),即使它可以去正常的路由,下次 FE 向 BE 发送请求时,它也会被重定向到你的维护页面。

于 2021-04-07T09:09:35.337 回答