Как переслать конкретному аннотированному обработчику из перехватчика пружины? - PullRequest
1 голос
/ 16 февраля 2011

Я написал перехватчик запросов 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);
    }

так или иначе, он сгенерирует цикл перенаправления, потому что он никогда не достигнет страницы перенаправления из-за перехвата и перенаправления.

Есть много способов решить эту проблему, но я не знаю, как их достичь:

  1. Определите URL-адрес запроса (но я не знаю, как) и не проверяйте подлинность для страницы входа. Более того, я бы хотел сделать это решение более гибким.
  2. Выберите обработчик входа непосредственно на контроллере. Как я могу это сделать? Возможно ли это?
  3. Я видел, что в примерах люди определяют отображение перехватчиков с помощью org.springframework.web.servlet.handler.SimpleUrlHandlerMapping, в любом случае я использую аннотации. Есть ли способ, используя аннотации, указать другое отображение для перехватчика, чтобы он не срабатывал с указанным выше адресом (accise? Action = login)? Или, может быть, связать различные схемы картирования?

1 Ответ

1 голос
/ 11 ноября 2011

Есть ли конкретная причина не использовать Spring-Security?

ИМХО прост, мощен и глубоко проверен.

Вы можете просто внедрить и внедрить свой собственный аутентификатор, Spring-Security будет обрабатывать перенаправление.

...