Авторизация на уровне атрибутов в Rails 3 - PullRequest
0 голосов
/ 04 марта 2011

Я использую devise для аутентификации и ищу инфраструктуру авторизации, которая позволяет мне объявлять разрешения на редактирование для определенных атрибутов модели.

У меня в приложении три разные роли: учитель, родитель и ученик. Студенческая модель принадлежит семье. Когда Учитель создает ученика, он может установить семейную ассоциацию. Однако, когда родитель посещает страницу редактирования для ученика, он не должен иметь возможности изменить эту связь, а только просматривать ее.

В представлении легко изменить форму в зависимости от того, кто ее просматривает (например, отключить или не отключать ввод выбора семейства), но специально созданная форма может обойти это. Мне нужно что-то, что вызовет какое-то исключение авторизации, когда кто-то пытается изменить атрибут, который ему не разрешено изменять.

В настоящее время я смотрю на Declarative_authorization , но, похоже, он недостаточно детализирован, чтобы ограничивать изменения атрибутов, только модель в целом.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2013

Я понимаю, что мой ответ приходит на 2 года позже.Для чего стоит то, что вам нужно, так это достаточно тонкая структура авторизации.

XACML, стандарт от OASIS обеспечивает именно это.Он может обрабатывать любое количество атрибутов.

Смотрите мой подробный ответ здесь: Gem авторизации Rails 4

0 голосов
/ 08 марта 2011

В итоге я воспользовался новой функцией MassAssignmentSecurity , хотя, похоже, что она может работать не очень хорошо в сочетании с accepts_nested_attributes_for.

...