Я написал перехватчик запросов Spring для аутентификации, он расширяет HandlerInterceptorAdapter. Я установил это с помощью этой строки в моем контексте сервлета:
<mvc:interceptors>
<bean class = "it.jsoftware.jacciseweb.controllers.AuthInterceptor">
<property name="manServ" ref = "acciseService"></property>
</bean>
</mvc:interceptors>
и метод предварительной обработки
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession sess = request.getSession();
String path = request.getPathTranslated();
boolean autenticated = maincont.isAuthenticated(sess);
if (!autenticated){
response.sendRedirect("accise?action=login");
return false;
}
return super.preHandle(request, response, handler);
}
так или иначе, он сгенерирует цикл перенаправления, потому что он никогда не достигнет страницы перенаправления из-за перехвата и перенаправления.
Есть много способов решить эту проблему, но я не знаю, как их достичь:
- Определите URL-адрес запроса (но я не знаю, как) и не проверяйте подлинность для страницы входа. Более того, я бы хотел сделать это решение более гибким.
- Выберите обработчик входа непосредственно на контроллере. Как я могу это сделать? Возможно ли это?
- Я видел, что в примерах люди определяют отображение перехватчиков с помощью org.springframework.web.servlet.handler.SimpleUrlHandlerMapping, в любом случае я использую аннотации. Есть ли способ, используя аннотации, указать другое отображение для перехватчика, чтобы он не срабатывал с указанным выше адресом (accise? Action = login)? Или, может быть, связать различные схемы картирования?