Google App Engine中的身份验证:app.yaml与python代码

时间:2010-07-13 20:01:37

标签: python google-app-engine authentication

我正在编写一个使用GAE的小应用程序。我的应用程序部分仅供管理使用。我在app.yaml中使用login: admin选项或在python代码中使用google.appengine.api.users.is_current_user_admin()有两个选项。基本身份验证对我的情况就足够了。

哪种解决方案更好?

使用app.yaml的优点是python代码更清晰一点。此外,app.yaml可能会更高效,因为它可以在服务器中处理。 (在最坏的情况下,它在性能方面是相同的。)唯一的缺点是我没有显示自定义页面,但我并不关心它。

我不确定我的断言是否正确。

2 个答案:

答案 0 :(得分:13)

我会说你的断言是正确的。假设您在app.yaml中有以下内容:

- url: /admin/.*
  script: admin.py
  login: admin

如果您希望admin.py中的所有内容仅限于管理员,则上述配置应该更具效果:您可以在未经授权admin.py的情况下使未经授权的请求失败。

当您想要定义更精细的逻辑和行为时,检查users.is_current_user_admin()非常有用。也许您有一个应该可用的处理程序,无论用户是管理员,非管理员还是未登录,您只需要检查其当前状态,以便返回相应的HTML。

答案 1 :(得分:2)

如果您的处理程序只能由管理员访问,那么app.yaml肯定是保护处理程序公开的页面的最简单方法。

但是,如果您有一些同时提供管理员和非管理员视图的处理程序(例如,您的main.py),那么您将不得不使用比app.yaml更细粒度的东西(例如,{{1 }})。

我希望在您的应用程序运行后,性能大致相当(加载页面的时间可以忽略不计)。