为什么GAE忽略我的yaml命令以要求管理员登录?
问题描述:
我正在开发GAE应用程序。使用本地主机进行开发是一件令人讨厌的事情,因为有一些互动组件需要系统在互联网上。不过,我感觉有一个预发布版本的应用程序生活,所以我启用它,当我解决它,然后禁用它。最好是要求管理员登录,这样我可以在线并保持私密。当我对app.yaml进行(非常简单的)必要的更改并更新应用程序时,没有任何更改。我仍然可以在不登录的情况下访问它(我检查了我是否已经退出谷歌)。有任何想法吗?我的app.yaml文本如下。顺便提一下,唯一需要登录的其他处理程序remote_api也是行为不当的。它返回错误“这个请求没有包含必要的头文件”。为什么GAE忽略我的yaml命令以要求管理员登录?
application: (removed for privacy)
version: 1
runtime: python
api_version: 1
handlers:
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin
- url: /stylesheets
static_dir: stylesheets
- url: /javascript
static_dir: javascript
- url: /images
static_dir: images
- url: /.*
script: example.py
login: admin
答
我最好的猜测是你并没有真正注销。发生这种情况的原因可能是因为在其他Google应用上使用注销功能时出现延迟 - 为了避免必须针对每个请求使用Google帐户服务进行检查,App Engine使用的是短期Cookie,因此无论Google帐户服务的东西,直到它超时(我认为它是5分钟)。
如果您确实想检查您是否可以在退出时访问此内容,请使用Chrome的隐身窗口。 (或者等待5分钟:-)
的remote_api的行为也可以解释:出于安全原因(以阻止某些基于JavaScript的攻击)的remote_api的处理程序没有让网页浏览器访问的处理程序。它只接受来自专用remote_api客户端库的请求,该客户端库传递了JavaScript代码无法设置的额外头文件。
顺便说一句,它可能会更好使用标准remote_api的处理位置,并使用内建子句来启用它:
builtins:
- remote_api: on
感谢圭多。那就是诀窍。 – Dessie 2012-01-29 14:43:53