在单页应用中对用户进行身份验证static_dir以便它可以调用同级 GAE API



我有一个通过静态目录在 GAE 上提供的 React 应用程序。

app.yaml:

- url: /my_admin_app
  static_dir: admin_app
  login: required
  secure: always

通过浏览器访问时,GAE 会按预期显示一个登录页面,然后继续访问 React 应用程序。

由于 React 应用程序与也在运行的 GAE 应用程序完全分开,因此我需要 Web 应用程序调用应该需要身份验证的 API,因为它们控制敏感数据。

React 应用程序正在调用此 URL 后面的敏感 API:

app.yaml:

- url: /admin/.*
  login: required // this causes a login page to be sent instead of data
  script: main.app
  secure: always

有没有更好的方法来提供我的静态文件,这样就不需要再次登录了?或者有没有办法在 GAE 显示自己的登录页面时传递身份验证信息?

我了解到,当谷歌提供登录信息时,它会将身份验证cookie传递到以下网页。

然后,页面使用 fetch 发出的任何请求都应指定 cookie 应与该请求一起传递。

来自 Mozilla 文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

默认情况下,fetch不会从服务器发送或接收任何 Cookie,如果站点依赖于维护用户会话,则会导致未经身份验证的请求(要发送 Cookie,必须设置 credentials init 选项(。

因此,为了确保身份验证被传递:

// to only pass to to same origin endpoints
fetch('/endpoint', {credentials:'same-origin'}).then(/*..*/)
// to pass without restriction
fetch('/endpoint', {credentials:'include'}).then(/*..*/)

最新更新