为什么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 
+0

感谢圭多。那就是诀窍。 – Dessie 2012-01-29 14:43:53