2010-07-13 110 views
4

我在写一个使用GAE的小应用程序。我有部分应用程序仅用于管理。我有两个选项,使用python代码中的app.yaml或google.appengine.api.users.is_current_user_admin()中的login: admin选项。基本认证对我来说已经足够了。Google App Engine中的身份验证:app.yaml与python代码

哪种解决方案更好?

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

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

回答

13

我会说你的断言是正确的。比方说,你已经在你的app.yaml如下:

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

如果你想在admin.py一切都被限制给管理员,配置上面应该是更好的性能:你能不能越权的请求而没有旋转起来admin.py

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

+1

当用户是管理员时,有效使用也可能包括模板的部分内容。 'users.is_current_user_admin()'用于认证之外的其他用途是明确的。 – rioki 2010-07-13 20:35:56

2

如果你有只能由管理员访问的处理程序,那么app.yaml当然看起来是保护那些处理程序公开的页面的最简单方法。但是,如果你有一些处理管理员和非管理员视图的处理程序(例如,你的main.py),那么你将不得不使用比app.yaml更细粒度的东西(例如,google.appengine.api.users.is_current_user_admin()) 。

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