Ролевая безопасность с Google App Engine и Python

Я хотел бы спросить, каков общий способ управления безопасностью на основе ролей с помощью Google App Engine, Python?

В app.yaml есть раздел "логин", но доступны только значения "admin" и "обязательный".

Как вы обычно справляетесь с ролевой безопасностью?

  • Создайте модель с двумя таблицами: Roles и UserRoles
  • Импорт значений для таблицы ролей
  • Вручную добавить пользователя в UserRoles
  • Проверьте, находится ли пользователь в нужной группе ролей

Любая другая идея или любой другой метод для безопасности на основе ролей, пожалуйста, сообщите нам об этом!

1 ответ

Решение

Я бы сделал это, добавив ListProperty для ролей в модель, представляющую пользователей. Список содержит любые роли, к которым принадлежит данный пользователь. Таким образом, если вы хотите узнать, принадлежит ли данный пользователь к данной роли (я полагаю, самая распространенная операция), это быстрый тест членства.

Вы можете поместить имена ролей непосредственно в списки в виде строк или добавить слой косвенности к другому объекту, указав сведения о роли, чтобы позже было легко изменить детали. Но это требует времени выполнения дополнительного RPC для получения сведений о роли.

Недостатком этого метода является то, что вы хотите удалить всех пользователей из данной роли или выполнить любой другой вид глобальной операции. Я полагаю, вы могли бы пометить роль как "удаленную", но тогда у вас все еще будут данные, которые загромождают все ваши пользовательские модели, пока вы не очистите их вручную. Поэтому мне любопытно услышать, что предлагают другие.

Другие вопросы по тегам