2011-02-06 4 views
4

Каждое обсуждение или учебное пособие, которое я когда-либо встречал в отношении авторизации, касалось простой двоичной авторизации. В приложении для ведения блога можно ли редактировать страницы? Может ли пользователь одобрить комментарии? Простые примеры.Управление авторизацией/областью действия в веб-приложении

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

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

FWIW, текущее приложение, с которым я имею дело, построено в Python Pylons.

+1

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

ответ

1

Я видел это сделать 2 способами:

  1. В модели богатых домена, объект меняется может сделать проверку безопасности (объект может быть введен в режим только для чтения, когда пользователь не был разрешено редактировать его, и, например, выбрасывает исключение иначе).
  2. В модели с анемическим доменом проверка выполняется службой, действующей на объекте (или сотрудничающей службой безопасности).

Оба подхода требуют работы.

1

Да, я иногда сталкиваюсь с этим. Вы можете посмотреть и посмотреть, есть ли у Python что-то похожее на GACL, которое имеет PHP. Но это может быть излишним.

Если вы столкнетесь с этим много, я бы использовал ACL и просто использовал его повторно. Конечно, вы используете ту же структуру.