Невозможно получить доступ к данным сеанса в фильтре сервлетов на сервере разработки ядра приложения - PullRequest
4 голосов
/ 30 апреля 2011

Я пытался написать фильтр сеанса, чтобы централизовать проверку авторизации в моем веб-приложении ядра приложения.

Мой фильтр выглядит следующим образом:

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpReq = (HttpServletRequest) request;
    HttpServletResponse httpResp = (HttpServletResponse) request;
    HttpSession session = httpReq.getSession();

    httpReq.setCharacterEncoding("UTF-8");
    httpResp.setCharacterEncoding("UTF-8");
    httpResp.setContentType("application/json");

    Boolean isAuthorized = (Boolean) session.getAttribute("isAuthorized");

    if (!isAuthorized || isAuthorized == null) {
        httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
    } else {
        chain.doFilter(request, response);
    }
}

Но когда я запускаю сервер разработки движка приложения, меня приветствует следующее исключение: "org.mortbay.jetty.request не может быть приведенна javax.servlet.http.httpservletresponse ".Что я делаю не так?

1 Ответ

14 голосов
/ 30 апреля 2011

Вы пытаетесь привести объект «запрос» в качестве ответа.

изменить следующим образом

HttpServletResponse httpResp = (HttpServletResponse) response;
...