【问题标题】:Authenticating a user in static_dir single-page-app so that it can call sibling GAE APIs在 static_dir 单页应用程序中对用户进行身份验证,以便它可以调用同级 GAE API
【发布时间】:2018-06-17 01:12:57
【问题描述】:

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

【问题讨论】:

    标签: google-app-engine authentication webapp2


    【解决方案1】:

    我了解到,当 Google 显示登录信息时,它会将身份验证 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(/*..*/)
    

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 2019-09-12
      • 2021-10-26
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2012-09-26
      相关资源
      最近更新 更多