модель альтернативных разрешений с repoze.what - PullRequest
0 голосов
/ 16 декабря 2010

Я пишу веб-приложение, и я хотел бы использовать repoze.what & repoze.who для обработки моей авторизации и аутентификации.Проблема в том, что repoze.what кажется жестко запрограммированным для принятия определенной модели разрешений, а именно:

  • Посетители сайта являются либо зарегистрированными пользователями, либо анонимными.
  • Учетные записи пользователей принадлежат к 0 или более группам.
  • Группы имеют 0 или более разрешений, связанных с ними.

Так, например, ваши разрешения могут быть «can-post-»article 'и' can-post-comment ', и вашими группами могут быть' author ',' visitor ', где' author 'может публиковать статьи и оставлять комментарии, в то время как посетители могут только оставлять комментарии.

ЭтоМодель, вероятно, работает для большинства сайтов.Тем не менее, мой сайт позволяет командам сотрудничать друг с другом на разных уровнях.Итак, мне нужна модель безопасности:

  • Посетители являются либо зарегистрированными пользователями, либо анонимными.
  • Пользователи являются членами 0 или более групп.
  • Для каждой группы, членом которой является пользователь, это членство будет иметь разные разрешения.Например, пользователь может быть «автором» или группой A, но «комментатором» в группе B.

Количество групп будет меняться со временем, и членство в этих группах также будетменять.Я не вижу простого способа интегрировать эту модель разрешений в repoze.what.Я что-то упускаю из виду?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

Ну, вы могли бы просто иметь группу "Group_A_commenter" и группу "Group_B_editor". Они не должны быть созданы вручную. :) Ваша модель - это просто группировка групп.

Но вы также должны иметь возможность проверять предикаты, которые реализуют ваши правила.

http://what.repoze.org/docs/1.0/Manual/Predicates/index.html#term-predicate

0 голосов
/ 09 января 2011

У меня есть ответ, после небольшой возни.

Ответ заключается в том, что единственная причина использовать схему аутентификации, предложенную в repoze.the документация, заключается в том, что если вы это сделаете, вы можете использовать их предикаты бесплатно.К счастью, написание и использование собственных предикатов - это очень просто.Мне кажется, что единственным жестким требованием является пользовательский объект (хотя, очевидно, вы можете называть это как хотите).В моем приложении есть несколько пользовательских предикатов, которые проверяют такие вещи, как:

  • Является ли пользователь членом этой группы?(группа определяется параметром)
  • Является ли пользователь зарегистрированным в системе?
  • Имеет ли пользователь эту конкретную роль сайта?

Затем я могу использовать эти предикаты везде, гдеЯ хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...