Я использую 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