使用cookie实现永久登陆

1,在cookie里面保存账号密码然后和数据库核对(由于我没有使用数据库,就不用了

2,在cookie里面保存时间戳和账号使用加密解密(我也没有使用时间戳

思路,request.getParameter("account");,获得账号,存入cookie,加入时间戳重定制网页内容

由于重定制的关系,这个时候我们不能用getParameter了,只能在cookie获得资料

原码

  1. <%@page contentType="text/html"%>
  2. <%@page pageEncoding="UTF-8"%>
  3. <%!private static final String KEY = "huanggabin";
  4.  
  5. public final static String getPassword(String a) {
  6. return a;
  7. }%>
  8. <%
  9. request.setCharacterEncoding("UTF-8");
  10. response.setCharacterEncoding("UTF-8");
  11. String action = request.getParameter("action");
  12. if ("login".equals(action)) {
  13. String account = request.getParameter("account");
  14. String account2 = request.getParameter("account");
  15. System.out.println(account2);
  16. String password = request.getParameter("password");
  17. int timeout = Integer.parseInt(request.getParameter("timeout"));
  18. String ssid = getPassword(account + KEY);
  19. Cookie accountCookie = new Cookie("account", account);
  20. accountCookie.setMaxAge(timeout);
  21. Cookie ssidCookie = new Cookie("ssid", ssid);
  22. ssidCookie.setMaxAge(timeout);
  23.  
  24. response.addCookie(accountCookie);
  25. response.addCookie(ssidCookie);
  26.  
  27. response.sendRedirect(request.getRequestURI() + "?"
  28. + System.currentTimeMillis());
  29. return;
  30. } else if ("logout".equals(action)) {
  31. Cookie accountCookie = new Cookie("account", "");
  32. accountCookie.setMaxAge(0);
  33. Cookie ssidCookie = new Cookie("ssid", "");
  34. ssidCookie.setMaxAge(0);
  35. response.addCookie(accountCookie);
  36. response.addCookie(ssidCookie);
  37. response.sendRedirect(request.getRequestURI() + "?"
  38. + System.currentTimeMillis());
  39. return;
  40. }
  41. boolean login = false;
  42. String account = null;
  43. String ssid = null;
  44. if (request.getCookies() != null) {
  45. for (Cookie cookie : request.getCookies()) {
  46. if (cookie.getName().equals("account")) {
  47. account = cookie.getValue();
  48. }
  49. if (cookie.getName().equals("ssid")) {
  50. ssid = cookie.getValue();
  51. }
  52. }
  53. }
  54. if (account != null && ssid != null) {
  55. login = ssid.equals(getPassword(account + KEY));
  56. }
  57. %>
  58. <%
  59. String account2 = request.getParameter("account");
  60. //System.out.println(account2);
  61. %>
  62. <!DOCTYPE html>
  63. <html>
  64. <head>
  65. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  66. <title>JSP Page</title>
  67. <script>
  68. alert(document.cookie);
  69. </script>
  70. </head>
  71. <body>
  72.  
  73. <%=login ? "欢迎回来" : "请先登录"%><br />
  74. <%
  75. if (login) {
  76. %>
  77. 欢迎你!!!,<%=account%>
  78. <a href="${pageContext.request.requestURI}?action=logout">注销</a>
  79. <%
  80. } else {
  81. %>
  82. <form action="${pageContext.request.requestURI}?action=login"
  83. method='post'>
  84. 账号:<input type="text" name="account"><br /> 密码: <input
  85. type="text" name="password"><br /> 有效期: <input type="radio"
  86. name="timeout" value="-1">关闭浏览器失效<br /> <input type="radio"
  87. name="timeout" value="<%=30 * 24 * 60 * 60%>">30天有效<br /> <input
  88. type="radio" name="timeout" value="<%=Integer.MAX_VALUE%>">永久有效<br />
  89. <input type="submit" value="登陆 " class="button">
  90. </form>
  91. <%
  92. }
  93. %>
  94. </body>
  95. </html>

cookie控制登陆时间的更多相关文章

  1. 借助Cookie实现是否第一次登陆/显示上次登陆时间

    Cookie实现是否第一次登陆/显示上次登陆时间 最近刚好看到Cookie这方面知识,对Servlet部分知识已经生疏,重新翻出已经遗弃角落的<JavaWeb开发实战经典>,重新温习了Co ...

  2. Cookie实现是否第一次登陆/显示上次登陆时间

    Cookie实现是否第一次登陆/显示上次登陆时间 最近刚好看到Cookie这方面知识,对Servlet部分知识已经生疏,重新翻出已经遗弃角落的<JavaWeb开发实战经典>,重新温习了Co ...

  3. (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)

    获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...

  4. 采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展

    原文:http://www.cnblogs.com/sanshi/archive/2012/06/22/2558476.html 若是持久Cookie,Cookie的有效期Expiration属性有当 ...

  5. 采用Asp.Net的Forms身份验证时,非持久Cookie的过期时间会自动扩展

    问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把HttpOnly的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一 ...

  6. 并发包之Future:代码级控制超时时间

    先谢Doug Lea. 使用场景: 最近在做webservice调用的时候,发现一个问题,对方的webservice接口很不稳定,所以在获取的数据时候经常要等待很久才能把数据全部拉回来,甚至有时候直接 ...

  7. Spring py登陆模块(包含 记录登陆时间,记录ip,增加积分)

    嘛基于最近的复习准备写个关于spring登陆模块的小程序 虽然小但是五脏俱全呐 话不多说让我来介绍一下今天的登陆程序. 这些是 基于Spring JDBC 的持久层实现 基于Spring 声明事物的业 ...

  8. 使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!

    ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 下 ...

  9. servlet 的控制缓存时间和response的重定向

    //控制缓存时间 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletE ...

随机推荐

  1. Highcharts 散点图

    Highcharts 散点图 配置 chart 配置 配置 chart 的 type 为 'scatter' .chart.type 描述了图表类型.默认值为 "line". ch ...

  2. 安装使用babel-polyfill。让IE支持es6

    安装 npm install --save-dev babel-polyfill 使用 在你的代码头部加载babel-polyfill,注意一定要在你的代码开始前,第一个js文件的顶部.如果是vue在 ...

  3. 【fzu-2261】浪里个浪

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  4. Rsync安装和配置

    一.Rsync简介 1.1什么是Rsync Rsync是一款快速的,开源的,多功能的,可以实现全量和增量的远程和本地的数据同步和数据备份的工具. 全量的概念是:全部备份. 增量的概念是:差异化备份.对 ...

  5. log4j打印不同颜色

    1.首先在eclipse中安装一个插件: ANSI COLOR 在Eclipse Marketplace 中直接搜索  ANSI COLOR 然后安装 2.在log4j 中加入红色字体部分: < ...

  6. C# 中移动文件到指定位置

    根据文件后缀名称将文件移动到指定的文件夹下面,具体代码如下: demo中使用的是 .png 具体的情况根据你的需求可以更改 using System; using System.IO; public ...

  7. 嵌套类,PIMPL

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  8. C#运行批处理【转】

    /// <summary> /// C#运行bat文件 /// </summary> /// <param name="batPath">< ...

  9. C++11_新语法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 本节主要介绍C++的新特性,对于C++的基础语法不再讲解.由于编译器的不同.在某些地方可能有些差异,但是无太大影响. 讲解本节知识之前先确认你的C ...

  10. New Concept English three(15)

    31w/m 43 Children always appreciate small gifts of money. Father, of course, provides a regular supp ...