Google App Engine - 了解用户是否为管理员

时间:2010-06-22 21:46:28

标签: google-app-engine

GAE中,有没有办法找出User是否是管理员?

虽然is_current_user_admin()显示当前用户是否是管理员,但我想知道是否有办法发现给定的User对象是否适用于管理员(例如假设) User.is_admin()功能)。

感谢您的阅读。

布赖恩

4 个答案:

答案 0 :(得分:5)

不幸的是,User模型不包含有关用户是否为管理员的任何信息。

如果您的管理员列表不经常更改,那么您可以编写自己的is_admin()函数,该函数会检查User.user_id()值是否与您的某个管理员帐户相对应。例如:

ADMIN_USER_IDS = ['id1', 'id2', ...]  # manually populated list
def is_admin(user):
    return user.user_id() in ADMIN_USER_IDS

答案 1 :(得分:3)

这是可能的,但不是通过User对象,它似乎只在Java api中,而不是在python中。您需要使用UserService

UserService userService = UserServiceFactory.getUserService();
boolean adminUser = userService.isUserAdmin();

答案 2 :(得分:1)

那是不可能的。

您可以围绕users.User创建一个包装类,并跟踪该用户是否是管理员,截至他/她上次登录时。(您无法确定是否给定用户当前为管理员,除非该用户当前是客户端。)

使用Google App Engine的管理员状态有些限制 - 例如,如果您想创建一个权限高于正常但不高于管理员的新用户组,该怎么办?最好不要将应用中的权限与管理控制台中的权限混淆。

答案 3 :(得分:-1)