【发布时间】:2015-05-14 12:54:53
【问题描述】:
在Google Docs 它说
您可以将任何手动或基本扩展模块配置为接受来自应用程序中其他模块的请求,方法是将其处理程序限制为仅允许管理员帐户,并在模块的配置文件中为相应的处理程序指定 login: admin。设置此限制后,来自应用程序中任何其他模块的任何 URLFetch 都将由 App Engine 自动进行身份验证,并且任何不是来自应用程序的请求都将被拒绝。
所以我这样做了,但不幸的是它不起作用。我正在向模块 B 上的模块 A 请求一个 url,该 URL 受 login: admin 属性保护
我可以在浏览器中获取显示登录页面的 url,在我以管理员身份继续之后,我可以获取我的路线。
它应该如何工作?据我了解,它应该在请求中添加一个包含某种授权令牌的标头。
如果我在模块 A 的请求中获取相同的 url,我会得到相同的重定向。 urllib2 默认跟随302 状态码,结果是登录页面。
我正在使用gcloud preview app run 命令运行环境。模块 A 是默认模块,模块 B 是 Managed VM 容器,这可能是这里的问题吗?
【问题讨论】:
-
能分享一下相关的模块配置和fetch的调用吗?另外,您是否尝试将模块 B 作为常规模块而不是托管 VM 运行?
-
一切正常,除了如果我将身份验证放在它将请求重定向到登录页面这一事实。我可以尝试将其作为模块(或至少相关代码)运行以将其缩小到 vm
-
是的,请添加代码并尝试隔离问题,因为这样更容易帮助您:)
-
在应用部署的时候有效果吗?
-
嗨,我在这里遇到了同样的问题,我得到了一个 302 (HTTP) 作为调用的结果:
result = urlfetch.fetch(url, follow_redirects=False, method=urlfetch.POST, payload=payload, headers={"Content-Type":"application/json"})我不明白,因为它应该已经被记录了以管理员身份登录,因为呼叫来自另一个模块。你的问题解决了吗?