【问题标题】:Authentication in Google App Engine: app.yaml vs. python codeGoogle App Engine 中的身份验证:app.yaml 与 python 代码
【发布时间】:2010-07-13 20:01:37
【问题描述】:

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

哪种解决方案更好?

使用 app.yaml 的好处是 python 代码更干净一些。另外,app.yaml 可能更有效,因为它可以在服务器中处理。 (在最坏的情况下,它在性能方面是相同的。)唯一的缺点是我不显示自定义页面,但我不太在意。

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

【问题讨论】:

    标签: python google-app-engine authentication


    【解决方案1】:

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

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

    如果您希望 admin.py 中的所有内容都仅限于管理员,那么上面的配置应该更高效:您可以在不启动 admin.py 的情况下失败未经授权的请求。

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

    【讨论】:

    • 当用户是管理员时,一个有效的用途也可能是包含模板的一部分。将users.is_current_user_admin() 用于身份验证以外的其他用途是明确的。
    【解决方案2】:

    如果您有只有管理员可以访问的处理程序,那么 app.yaml 无疑是​​保护这些处理程序公开的页面的最简单方法。

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

    我希望应用程序运行后性能大致相当(加载页面所需时间的一小部分可以忽略不计)。

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2015-01-02
      相关资源
      最近更新 更多