我正在编写一个使用GAE的小应用程序。我的应用程序部分仅供管理使用。我在app.yaml中使用login: admin
选项或在python代码中使用google.appengine.api.users.is_current_user_admin()
有两个选项。基本身份验证对我的情况就足够了。
哪种解决方案更好?
使用app.yaml的优点是python代码更清晰一点。此外,app.yaml可能会更高效,因为它可以在服务器中处理。 (在最坏的情况下,它在性能方面是相同的。)唯一的缺点是我没有显示自定义页面,但我并不关心它。
我不确定我的断言是否正确。
答案 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 }})。
我希望在您的应用程序运行后,性能大致相当(加载页面的时间可以忽略不计)。