【问题标题】:Session management in Java Web AppJava Web App 中的会话管理
【发布时间】:2014-10-30 02:00:53
【问题描述】:

我正在用 Java 创建一个 E 购物项目,但由于项目中的会话而卡住了。我有一个用户登录页面,当用户登录时,它将通过 Servlet 进行验证并创建一个新会话,然后它将转到 productslist.jsp

现在我的问题是,如果用户复制productslist.jsp的url,在地址栏重新输入,就可以直接进入productslist.jsp页面,请问之前怎么限制用户登录浏览页面?

【问题讨论】:

  • 如果您使用普通的 servlet(我不推荐),您总是可以编写自己的安全过滤器。在该过滤器中,您将检查用户是否已登录(例如,登录后添加的会话中的某些参数)。如果不是 - 过滤器将拒绝请求,您可以将用户重定向到登录页面。我说过我不推荐普通的 servlet - 看看可以为你做这件事的好的框架,然后你可以只编写你的业务逻辑(例如 Spring Framework)。
  • 好的,谢谢@ArekWoźniak..我有个主意。

标签: java jsp session servlets


【解决方案1】:

您需要在所有页面中验证会话以避免未经授权的访问或直接访问。

<%  request.getSession();
    String ses=(String) session.getAttribute("usr");
    if (session != null && !session.isNew()) {

    } else if(!session.equals(ses))
            {
        response.sendRedirect("loginPage.jsp");
    }
%>

但不建议这样做,因为它会在所有页面中创建代码重复,

  1. 您可以拦截对 servlet 的请求
  2. 你可以做的另一件事是ServletFilters

为了防止直接访问.jsp页面,你可以把它们放在WEB-INF下,它需要拦截来自servlet的请求

【讨论】:

  • 过滤器会是更好的选择,否则所有页面都会出现重复代码
  • @SanKrish,我是否需要包含页面指令 ..如果我这样做,在运行时它会显示错误
  • 不,如果你在你的页面中包含了``,那么你就不能在那个特定的页面中使用会话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2011-04-03
  • 1970-01-01
  • 2015-02-12
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多