在static_dir单页面应用中验证用户,以便它可以调用兄弟GAE API

时间:2018-01-08 03:20:19

标签: google-app-engine authentication webapp2

我有一个通过静态目录在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提供自己的登录页面时,有没有办法传递身份验证信息?

1 个答案:

答案 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(/*..*/)