Как программно получить доступ из элемента в Spring Security

StackOverflow https://stackoverflow.com/questions/4830973

Вопрос

Как я могу программно получить доступ к содержимому декларациям перехвата (из http://www.springframework.org/schema/security схема)? Например,

<http auto-config='true'>
    <intercept-url pattern="/static/**" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/**" access="ROLE_USER" />
    ...
</http>

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

Я посмотрел на HttpConfigurationBuilder, но он защищен пакетом и, похоже, не предлагает так много информации. Я также пробовал:

  FilterSecurityInterceptor interceptor = appContext.getBean(FilterSecurityInterceptor.class);
  if (interceptor != null) {
      for (ConfigAttribute attr : interceptor.getSecurityMetadataSource().getAllConfigAttributes()) {
          // Extract the attributes ... 
          attr.getAttribute();
      }
  }

Но мне удалось только получить доступ к ролям, а не к моделям URL.

Это было полезно?

Решение

Конфигурация, объявленная с использованием поддержки пространства имен, не существует в том же «формате» после загрузки контекста приложения.

Если вы хотите сохранить информацию о картировании ролей, вам необходимо получить к ней доступ при анализе конфигурации - и сохранить необходимые данные для будущего использования. Вы можете сделать это путем подкласса org.springframework.security.config.http.HttpSecurityBeanDefinitionParser, чтение нужных данных, и делегируя super.

Видеть Spring Security 3 - Приложение D. расширяемое XML для использования обычая BeanDefinitionParser реализации.

Другие советы

Возможно, вы можете проверить, если getFilterChainMap() метод FilterChainProxy Класс дает вам соответствующую информацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top