Ролевая безопасность с Google App Engine и Python - PullRequest
5 голосов
/ 19 сентября 2009

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

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

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

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

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

1 Ответ

4 голосов
/ 19 сентября 2009

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

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

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

...