Google App Engine - узнайте, является ли пользователь администратором
В GAE, есть способ узнать, есть ли User является администратором?
Пока is_current_user_admin()
показывает, является ли текущий пользователь администратором, я хотел бы знать, есть ли способ узнать, данный объект User
предназначен для администратора или нет (например, гипотетическая функция User.is_admin()
).
Спасибо, что прочитали.
Брайан
Ответы
Ответ 1
К сожалению, модель 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
Ответ 2
Это возможно, но не через объект User, и это похоже только на Java api, а не на python. Вам нужно использовать UserService:
UserService userService = UserServiceFactory.getUserService();
boolean adminUser = userService.isUserAdmin();
Ответ 3
Это невозможно.
Вы можете создать класс-оболочку вокруг users.User и отслеживать, был ли этот пользователь администратором, как и в последний раз, когда он входил в систему. (Вы не можете определить, данный пользователь в настоящее время админ, если только этот пользователь не является клиентом.)
Использование статуса администратора Google App Engine несколько ограничивает - например, что делать, если вы хотите создать новую группу пользователей с привилегиями, которые выше, чем обычно, но не так высоки, как администратор? Лучше не связывать привилегии в вашем приложении с привилегиями в Консоли администрирования.
Ответ 4
Для python мы можем использовать app.yaml
для настройки доступа администратора. См. https://developers.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Requiring_login_or_administrator_status.