2010-05-03 6 views
2

Я немного расплывчато о том, как начать использовать плагин siro, после прочтения нескольких документов. Я решил против Nimble, поскольку он поставляется с несколькими таблицами и плагинами пользовательского интерфейса.Grails Shiro плагин: подтверждающий мое понимание

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

  1. присвоить строку разрешения на эту тему, и сохранить его в БД
  2. проверки разрешения через isPermitted, hasPermission (или соответствующие тег в GSP).


1. Когда использовать фильтр доступа через фильтр?
2. есть ли закрытие, введенное в контроллер, где я могу определить разрешение для действий в нем? Я где-то читал о статическом закрытии accessControl на каждом контроллере, но, похоже, не документирован.
3. Как создать типичный сценарий управления доступом, как только создатель (что-то, сообщение и т. Д.) Может удалить его? Одной из возможностей является создание и сохранение строки разрешений на основе идентификатора пользователя. проверить разрешение на получение объекта (сообщение), получить идентификатор пользователя и сравнить с субъектом .. кажется сложным .. любая простая реализация?

большое спасибо .. Babu.

+0

Я снова посмотрел на Проворный, и кажется, что это не плохие промежутки всех функций. Кажется, что они расходятся в ядре и социальных особенностях .. нужно исследовать дальше .. Одной задачей было бы интегрировать стиль в мой заявление... – bsr

ответ

1

1 Когда использовать защитный фильтр контроля доступа?

A. Используйте accessControl {true}, если вы хотите ограничить доступ к действиям контроллера для аутентифицированных пользователей.

B. Используйте accessControl(), когда вы хотите ограничить доступ к действиям контроллера независимо от содержимого параметра на основе разрешений «$ {имя_контроллера}: $ {actionName}».

C. Если вы хотите ограничить действия на основе содержимого параметра, например. удалите только объект домена, для которого у вас есть разрешение на удаление «$ {name}: $ {id}: delete», вам нужно явно проверить значение «Исправлено» в контроллере.

3 Как создать типичный сценарий управления доступом, как только создатель ?

Я бы добавил необходимые разрешения пользователю при создании сообщения, например. "post: $ {postId}: *" Таким образом, разрешения принадлежат пользователям и/или ролям, а не произвольным объектам домена, как это предусмотрено в режиме работы Shiro. В отличие от разрешений файловой системы, которые принадлежат файлам и каталогам, а не пользователям.

Смежные вопросы