Моего конфиг пружинной безопасности:Spring Security не выбрасывает никаких исключений
<security:http auto-config="true" use-expressions="true" >
<security:intercept-url pattern="/game/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/**" access="permitAll"/>
<security:form-login password-parameter="password" username-parameter="username" login-page="/"
default-target-url="/game/" login-processing-url="/processLogin" authentication-failure-url="/"/>
<security:logout logout-url="/game/logout" logout-success-url="/" delete-cookies="true" invalidate-session="true"/>
<security:access-denied-handler ref="accessDeniedHandler" />
</security:http>
пользовательского обработчик:
@Component
public class AccessDeniedHandler extends AccessDeniedHandlerImpl {
@Override
public void handle(HttpServletRequest request,
HttpServletResponse response, AccessDeniedException exception)
throws IOException, ServletException {
super.handle(request, response, exception);
}
}
Исключения распознаватель:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key=".AccessDeniedException">accessDenied</prop>
</props>
</property>
</bean>
У меня есть проблема в том, что весна безопасность не бросает никаких исключений. Например, когда я ввожу защищенный URL-адрес, он перенаправляет меня на страницу входа. Если я удаляю страницу входа из конфигурации, она перенаправляет меня на весеннюю регистрационную форму по умолчанию. Из-за этого я не могу обрабатывать такие исключения, как AccessDeniedException. Как вы можете видеть выше, я определил обработчик запрещенного доступа, который переопределяет метод дескриптора, но он даже не входит в него. Я также пробовал с SimpleMappingExceptionResolver, но это тоже не работает. Итак, мой вопрос: как мне сделать исключения для исключения Spring, чтобы я мог их поймать либо с помощью распознавателя, либо с помощью специального обработчика?
'AccessDeniedHandler' применяется только к аутентифицированным пользователям. Возможно, если вы более подробно объясните, чего вы пытаетесь достичь. Почему бы вам не попробовать Spring Security для аутентификации пользователей, например? –
Привет, Лука, спасибо за информацию. Не знал, что это относится только к аутентифицированному пользователю. То, что я пытаюсь сделать, - это просто отобразить мою страницу с ошибкой, когда пользователь, не прошедший проверку подлинности, пытается получить доступ к материалам только для прошедших проверку подлинности пользователей, но не сопоставляя их с каким-либо URL-адресом, чтобы пользователи не могли вручную вводить/отклонять, например. – Sikor
Неясно, как пользователи на самом деле аутентифицированы или почему вы не хотите, чтобы они были, когда они обращаются к сайту. Если вы хотите переопределить процесс аутентификации для отказа в доступе, вы можете использовать пользовательский 'AuthenticationEntryPoint'. Значение по умолчанию будет перенаправлено на страницу входа. Также не используйте 'auto-config'. Он создаст настройку входа, независимо от того, сконфигурируйте ее или нет. Просто удалите его. –