Как проверить пользователя, авторизованного с помощью фильтра - PullRequest
1 голос
/ 13 февраля 2011

У меня есть фильтр и сервлет входа. Как я могу проверить - авторизованный пользователь или нет? а если не авторизован - перенаправить его в сервлет входа.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2011

Сделайте это:

  1. Когда пользователь входит в систему, установите объект User для этого пользователя в HttpSession. Таким образом, httpRequest.getSession().setAttribute("LOGGED_USER", userObject)

  2. Теперь каждый раз, когда вы нажимаете фильтр / фильтр безопасности. Первое, что вы делаете, проверяете этот атрибут.

  3. Если атрибут отсутствует, перенаправить / переслать запрос сервлету входа в систему.

Псевдокод будет выглядеть так:

//in your login servlet, on successful login
request.getSession().setAttribute("LOGGED_USER", userObject);

//in your security filter
if(request.getSession().getAttribute("LOGGED_USER") == null){
//optionally, you may like to check if that attribute has a valid userId as well
     RequestDispatcher rd = request.getRequestDispatcher("relative/path/to/login/servlet")
     rd.forward(request, response);
     return;
}

Изменить 1: см. http://download.oracle.com/javaee/5/tutorial/doc/bncbx.html

2 голосов
/ 13 февраля 2011

В фильтре: ЕСЛИ UserObjectInSession существует => пользователь вошел В противном случае сделайте перенаправление на сервлет

В сервлете: Если проверка () будет правильной => поместить UserObjectInSession в сессию

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {       
    HttpServletRequest httpReq = (HttpServletRequest) request; 
    HttpServletResponse httpRes = (HttpServletResponse) response;

    HttpSession session = httpReq.getSession();
    User currentUser = (User)session.getAttribute("userInSession");

    if (currentUser == null) {
        httpRes.sendRedirect("...")    //redirect to LoginServlet
    } else {        
        chain.doFilter(request, response);
    }
}
...