我有一个通过静态目录在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提供自己的登录页面时,有没有办法传递身份验证信息?
答案 0 :(得分:1)
我了解到,当Google提供登录信息时,它会将身份验证Cookie传递到以下网页。
然后,页面使用fetch
发出的任何请求都应指定cookie应与该请求一起传递。
来自Mozilla文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
默认情况下,
fetch
无法从服务器发送或接收任何Cookie,如果网站依赖于维护用户会话(发送Cookie,credentials
init,则会导致未经身份验证的请求必须设置选项)。
所以要确保传递auth:
// to only pass to to same origin endpoints
fetch('/endpoint', {credentials:'same-origin'}).then(/*..*/)
// to pass without restriction
fetch('/endpoint', {credentials:'include'}).then(/*..*/)