JSP запрещает прямой доступ к URL незарегистрированным пользователем - PullRequest
2 голосов
/ 15 июля 2010

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

1 Ответ

4 голосов
/ 15 июля 2010

Во время входа в систему поместите найденный 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...