【问题标题】:Servlet: overwrite existing cookieServlet:覆盖现有的 cookie
【发布时间】:2013-08-14 06:29:54
【问题描述】:

我有两个servlet,一个用来注册用户,另一个用来记录已经注册的用户。每个 servlet 都会向用户发送一个 cookie:

String username = request.getParameter(username);
Cookie user_cookie = new Cookie("userCookie", username);
user_cookie.setMaxAge(60 * 60); //1 hour durability cookie
response.addCookie(user_cookie);

(请求和响应是 HttpServletRequest 和 HttpServletResponse 类型)。注册后,用户将自动登录系统。现在如果一个客户端登录系统(并收到一个cookie),那么同一个客户端注销并注册一个新用户(然后收到另一个cookie,但如代码所示,同名),user_cookie文件,将被覆盖或不是吗?

【问题讨论】:

  • 它将是,因为它将被设置为一个新的用户名。 Cookie user_cookie = new Cookie("userCookie", username);解释它。
  • 存储和检查登录用户的方法多么奇怪。您是否清楚客户端可以操作 cookie?因此客户端可以只编辑 cookie 中的用户名,以便以不同的用户身份登录?因此这整个方法是完全不安全的?只需利用会话。

标签: java servlets cookies


【解决方案1】:

是的,它将被覆盖。

老用户

String username = request.getParameter(OldUser);
Cookie user_cookie = new Cookie("userCookie", OldUser);
user_cookie.setMaxAge(60 * 60); //1 hour durability cookie
response.addCookie(user_cookie);

新用户

String username = request.getParameter(NewUser);
Cookie user_cookie = new Cookie("userCookie", NewUser);
user_cookie.setMaxAge(60 * 60); //1 hour durability cookie
response.addCookie(user_cookie);

注意:新用户名不等于旧用户名。

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 2019-07-07
    • 2012-02-25
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多