Плагин Grails Shiro: подтверждает мое понимание - PullRequest
2 голосов
/ 03 мая 2010

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

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

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

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

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

1 Ответ

1 голос
/ 01 апреля 2011

1 когда использовать фильтр безопасности контроля доступа?

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

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

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

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

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

...