Ролевая безопасность с Google App Engine и Python
Я хотел бы спросить, каков общий способ управления безопасностью на основе ролей с помощью Google App Engine, Python?
В app.yaml есть раздел "логин", но доступны только значения "admin" и "обязательный".
Как вы обычно справляетесь с ролевой безопасностью?
- Создайте модель с двумя таблицами: Roles и UserRoles
- Импорт значений для таблицы ролей
- Вручную добавить пользователя в UserRoles
- Проверьте, находится ли пользователь в нужной группе ролей
Любая другая идея или любой другой метод для безопасности на основе ролей, пожалуйста, сообщите нам об этом!
1 ответ
Я бы сделал это, добавив ListProperty для ролей в модель, представляющую пользователей. Список содержит любые роли, к которым принадлежит данный пользователь. Таким образом, если вы хотите узнать, принадлежит ли данный пользователь к данной роли (я полагаю, самая распространенная операция), это быстрый тест членства.
Вы можете поместить имена ролей непосредственно в списки в виде строк или добавить слой косвенности к другому объекту, указав сведения о роли, чтобы позже было легко изменить детали. Но это требует времени выполнения дополнительного RPC для получения сведений о роли.
Недостатком этого метода является то, что вы хотите удалить всех пользователей из данной роли или выполнить любой другой вид глобальной операции. Я полагаю, вы могли бы пометить роль как "удаленную", но тогда у вас все еще будут данные, которые загромождают все ваши пользовательские модели, пока вы не очистите их вручную. Поэтому мне любопытно услышать, что предлагают другие.