Отключение функции редактирования с помощью Spring Security - PullRequest
2 голосов
/ 29 ноября 2011

Я интегрировал Spring Security в свое приложение и определил уровни доступа к страницам в моем spring-security.xml в следующем формате

<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/index" access="Admin" />

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

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Конечно. Если вы используете JSP, то есть встроенные библиотеки тегов :

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

<sec:authorize access="hasRole('supervisor')">
  <a href="edit">edit</a>
</sec:authorize>

Ссылка edit появится, только если у пользователя есть роль supervisor. Есть аналогичные решения для других технологий просмотра. Если вы создаете свой пользовательский интерфейс в какой-либо компонентной инфраструктуре, такой как Wicket, просто проверьте учетные данные пользователя в коде Java и скройте там определенные элементы управления.

Однако это только начало. Вы также должны обеспечить безопасность на стороне сервера, ограничив URL-методы или методы Java (@Secured и друзья).

В противном случае ссылка не будет видна, но злоумышленник все равно сможет обнаружить скрытый URL или выполнить HTTP POST с помощью внешних инструментов.

1 голос
/ 29 ноября 2011

Как писал Томаш, библиотеки тегов Spring Security - хорошее начало. Однако, скорее всего, вы также хотели бы защитить соответствующие методы в своих контроллерах (в случае, если некоторые неавторизованные найдут URL-адрес / edit и вызовут его). Это можно сделать, добавив аннотации JSR-250 @RolesAllowed или Spring @Secured к своему контроллеру, например,

public class SomePageController {

    @RolesAllowed("Admin")
    public void editSomething(Map<String, String> data) {
        // only Admins reach this part
    }
}

Добавить

<global-method-security jsr250-annotations="enabled" />

в конфигурацию Spring для аннотации JSR-250 или

<global-method-security secured-annotations="enabled" />

для аннотации @Secured Spring. Дополнительную информацию можно найти в справочных документах .

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