2
我有登录后显示的用户信息页面。如何阻止用户直接访问用户信息页面?我如何通过会话来实现?JSP拒绝未登录用户直接访问URL
我有登录后显示的用户信息页面。如何阻止用户直接访问用户信息页面?我如何通过会话来实现?JSP拒绝未登录用户直接访问URL
在登录时,将找到的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.
}
地图这个过滤器上的/secured/*
(或别的任何你想要的)的URL模式,并把喜欢的用户信息页面的安全网页在同一文件夹。
要注销用户,只需执行session.removeAttribute("user")
或更为彻底的session.invalidate()
。