URL-адрес Spring Security Interceptor не работает - PullRequest
1 голос
/ 25 октября 2011

Я использую Spring Security 3.0.3 для проекта.

Этот проект имеет 3 зоны, которые должны быть доступны для разных людей

Поэтому я создаю следующую структуру - WEB-INF / (для всех = незащищен) - WEB-INF / app (для пользователей = ROLE_USER) - WEB-INF / app / admin.jsf (для администраторов = ROLE_ADMIN)

Этот admin.jsf находится в той же директории, которую я не могу изменить к сожалению.

Моя информация о пользователе загружена из базы данных.

Они определены как:

<bean id="preAuthenticatedProcessingFilterEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/> <security:http entry-point-ref="preAuthenticatedProcessingFilterEntryPoint" >
   <security:custom-filter position="PRE_AUTH_FILTER" ref="MyFilter"/>
   <security:intercept-url pattern="/app/admin.jsf" access="ROLE_ADMIN" />         
   <security:intercept-url pattern="/app/**" access="ROLE_USER" />
   <security:intercept-url pattern="/**" access="" />
</security:http>

Теперь все отлично работает. Пользовательские данные загружены, роли установлены в соответствии с БД, но, к сожалению,

  • незащищенная область доступна для всех (это нормально)
  • администраторы могут видеть каждую страницу (так как они тоже ROLE_USER)
  • пользователи ролей НЕ МОГУТ войти на страницы в приложении

У кого-нибудь есть подсказка, что я сделал не так? Я тестирую его локально, и URL браузера: http://localhost:8080/my_app/app/admin.jsf


До сих пор я был в состоянии определить источник проблемы, что весенняя безопасность игнорирует мои роли. Шаблоны URL-адресов перехвата работают, к сожалению, мои определенные роли - нет.


Я, наконец, смог определить проблему: коллега проверил второй файл конфигурации, и я изменил неправильный. GRML

1 Ответ

2 голосов
/ 25 октября 2011

Проблема в том, что шаблоны в конфигурации являются шаблонами URL, это НЕ местоположение ваших файлов jsf или внутри приложения.

Так что, если вы не обращаетесь к этому jsf через: http://<server>:<port>/<ApplicationName>/app/admin.jsf, вам просто нужно исправить шаблон URL на URL, который вы действительно используете.

...