我有一个通过静态目录在 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(/*..*/)