Я использую Spring 3.0.3 с Spring Security.
Итак, у меня довольно мягкие ограничения на приложение, которое я создаю. Я только хочу убедиться, что человек может войти в систему и пройти проверку подлинности для просмотра приложения. Я не хочу предоставлять роли каждому потенциальному пользователю этого приложения (это может быть десятки тысяч).
Итак, было бы хорошо использовать:
<security:intercept-url pattern="/**" access="isFullyAuthenticated()" requires-channel="https"/>
Но теперь я хочу иметь возможность запретить людям использовать приложение, если мне нужно, поэтому я создал роль с именем ROLE_BANNED в надежде, что смогу просто назначить роли тем людям, у которых есть проблемы.
Итак, сейчас я пытаюсь это:
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
Поначалу это сработало, но не может загрузить мою запрещенную страницу. Я считаю, что это ограничивает доступ к запрещенной странице. Я не могу загрузить запрещенную страницу через контроллер или как jsp в WEB-INF.
Может кто-нибудь показать мне, как разрешить аутентифицированным пользователям получать доступ ко всем моим приложениям и отправлять людей с определенной ролью (ROLE_BANNED) на запрещенную страницу?
EDIT
Вот вся моя безопасность: http setup:
<security:http auto-config="true" access-denied-page="/denied" entry-point-ref="casAuthenticationEntryPoint" use-expressions="true">
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
<security:intercept-url pattern="/denied" access="IS_AUTHENTICATED_FULLY" filters="none" />
<security:logout logout-url="/logout" logout-success-url="${cas.logoutUrl}" />
<security:session-management session-fixation-protection="none" />
<security:custom-filter after="CAS_FILTER" ref="casAuthenticationFilter"/>
<security:custom-filter before="CHANNEL_FILTER" ref="channelProcessingFilter" />
<security:port-mappings>
<security:port-mapping http="80" https="443" />
</security:port-mappings>
</security:http>
Я пытался использовать отображенную на контроллере запрещенную страницу (/ denied), страницу jsp (/denied.jsp) и даже простую HTML-страницу (/denied.html), но я получаю 404 за каждую. Когда это происходит, я ничего не вижу в лог-файлах.