Фильтр не получает request.getAttribute () - PullRequest
0 голосов
/ 19 февраля 2011
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    try { 
        String logged = (String) ((HttpServletRequest) request).getAttribute("loginstatus");
        if(logged != null) {
            out.print("ok");
        } else {
            out.print("not ok");
        }

Почему значение logged всегда null?

1 Ответ

3 голосов
/ 20 февраля 2011

Фильтр по умолчанию является самым первым, что выполняется по HTTP-запросу. Атрибуты запроса обычно управляются кодом на стороне сервера. Кто / что должен был установить атрибут запроса, прежде чем этот фильтр выполнит свою работу?

Вас не смущает, как работают HTTP-запросы / ответы? Запрос завершен / обработан, включая все атрибуты, когда соответствующий ответ завершен. Каждый последующий запрос является совершенно новым, который не содержит вообще те же атрибуты, что и предыдущий.

Вы на самом деле не хотите использовать область сеанса? Выполните следующие действия при входе в систему:

request.getSession().setAttribute("user", user);

А затем следующее в фильтре аутентификации:

if (((HttpServletRequest).getSession().getAttribute("user") != null) {
    chain.doFilter(request, response); // Continue.
} else {
    ((HttpServletResponse) response).sendRedirect("login"); // Redirect to login.
}

Смотри также:

...