java - Cookie仅在返回页面有效,在其他页面无效

标签 java jsp servlets

我有一个简单的jsp登录页面,我正在尝试实现“记住我2”功能。 jsp的页面代码:

 String username = "";
    Cookie[] vec = request.getCookies();
    for(int i=0; vec!=null && i<vec.length; i++)
    {
        if(vec[i].getName().equals("userNameCookie")&&!vec[i].getValue().equals(""))
        {
            username = vec[i].getValue();
        }   
    }

表单参数被发送到servlet Controller , Controller 创建cookie并将其添加到响应中,然后 Controller 将请求转发到其他页面。

我的问题是,返回登录页面后, Controller 添加到响应中的 cookie 不存在。事实上,cookie 存在于 Controller 将请求转发到的页面中。

这是 Controller 的代码:

String username = request.getParameter("username");
            String password = request.getParameter("password");
            Cookie cookie = new Cookie("userNameCookie", username);
            cookie.setMaxAge(7 * 24 * 60 * 60);
            response.addCookie(cookie);
getServletConfig().getServletContext().getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);

我做错了什么?

谢谢!

最佳答案

你可能必须specify a path为了你的 cookies 。 IIRC,如果您不指定,则 cookie 仅对 cookie 来源的 URL 有效。

此外,您的“记住我”cookie 确实不安全。任何用户都可以通过简单地发送带有其他用户名的 cookie 来验证自己的身份。您应该使 cookie 随机且很难猜测,并将每个随机 cookie 与数据库中为其生成的用户相关联。

关于java - Cookie仅在返回页面有效,在其他页面无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183390/

相关文章:

javascript - Struts2上传多个文件前如何显示选中的文件名?

jsp - 如何在包含的页面中使用声明的变量?

java - 使用 Java Web 服务时如何访问 HttpServletRequest 对象

java - if-else 语句无法正常工作

java - paypal:如何在 soap java 中确认我对每个 paypal 定期付款期的申请

java - 频繁刷新页面信息

java - 容器生成的请求和响应对象的类型是什么?

java - 为什么我只能在 GUI 构造函数中更改按钮背景颜色?

java - 如何拆分内部有数组的以下字符串

servlets - 在 servlet 过滤器中创建错误页面会导致错误 "Writer already obtained"