JSP拒绝未登录用户对URL的直接访问

标签 jsp authorization

我有一个登录名和登录后显示的用户信息页面。如何阻止用户直接访问用户信息页面?我如何通过 session 来实现它?

最佳答案

登录时,将找到的User对象放入 session 中。

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,它只检查 session 中是否存在登录用户。

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()

关于JSP拒绝未登录用户对URL的直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255718/

相关文章:

Youtube Data API v3 oAuth2 无法更改权限

ruby-on-rails - 如果 Pundit 未授权显示操作,则重定向到特定 View

java - 如何使用 SPring MVC 在选择输入上发生 onChange 时显示对象的属性

java - angular js 优于 jsp view

javascript - 使用 request.getParam 获取按钮的 id

asp.net-mvc - 我应该在哪里放置可以重定向请求的检查?

ios - 如何使用 Curl 和 Postman 构建 HTTP 请求

python - 如何在 Flask 中实现基于角色的访问控制?

java - 如何将Frame(jframe)集成到jsp中

java - 如何将 java 对象列表转换为 JSON 并通过 AJAX 显示它们