Весеннее веб-приложение безопасности на основе владельца записи - PullRequest
1 голос
/ 23 июня 2011

Допустим, у меня есть пользователи и статьи.

Аноним может перечислять и читать статьи.
Только зарегистрированные пользователи могут создавать статьи.
Пользователь может редактировать только свои статьи.
И, конечно, админ может делать все что угодно.

Я смотрел на весеннюю безопасность, но не нашел способа сделать это. Моему приложению не нужны роли, и ACL будет слишком «тяжелым» для этого.

Может быть, я должен реализовать свою собственную безопасность?

1 Ответ

0 голосов
/ 27 июня 2011

Вы правы, ACL будет слишком много для этой задачи.

Вы можете использовать тег авторизации Spring Security в JSP, который предоставляет доступ зарегистрированному пользователю через объект principal.Пример для ограничения доступа к редактированию статьи для пользователя с заданным именем пользователя:

<sec:authorize access="hasRole('SOME_PRIVILEGE_OR_ROLE') and ${someArticle.username} == principal.username">
    ...
</sec:authorize>

Обратите внимание, что SOME_PRIVILEGE_OR_ROLE может быть некой ролью, как «LOGGED_IN_USER», но также может указывать определенную привилегию, например «READ_ARTICLE»или «UPDATE_ARTICLE».Spring Security здесь гибкая.Что бы вы ни выбрали, оно должно быть в коллекции GrantedAuthorities вашего пользовательского объекта.

Обратите также внимание, что вы можете реализовать свой собственный пользовательский объект, добавляя дополнительную информацию к тому, что предоставляет интерфейс UserDetails, например, сравнивая идентификатор пользователячем имя пользователя.

Наконец, обратите внимание, что вам нужна последняя версия Spring Security (> = 3.1), чтобы Spring EL работал, как в примере.

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