2010-07-15 2 views
2

У меня есть страница входа в систему и пользовательская информация, которая отображается после входа в систему. Как я могу заблокировать пользовательскую информационную страницу от прямого доступа пользователя? Как я могу реализовать это с помощью сеанса?JSP запрещает прямой доступ к URL-адресу не зарегистрированным пользователем

ответ

4

При входе в систему поместите найденный объект User в сеанс.

String username = request.getParameter("username"); 
String password = request.getParameter("password"); 
User user = userDAO.find(username, password); 
if (user != null) { 
    request.getSession().setAttribute("user", user); 
    response.sendRedirect("secured/userpage"); 
} else { 
    request.setAttribute("error", "Unknown username/password combo, please try again"); 
    request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); 
} 

Затем осуществить Filter, который просто проверяет наличие вошедшего в систему пользователя в сеансе.

if (((HttpServletRequest) request).getSession().getAttribute("user") != null) { 
    chain.doFilter(request, response); // Logged in, so just continue. 
} else { 
    response.sendRedirect("login"); // Not logged in, redirect to login page. 
} 

Карта этот фильтр на шаблон URL из /secured/* (или что-нибудь еще, что вы хотите) и поставить защищенные страницы, как на информационной странице пользователя в той же папке.

Чтобы выйти из системы, просто сделайте session.removeAttribute("user") или, более подробно, session.invalidate().

Смежные вопросы