使用cookie实现永久登陆

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

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

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

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

原码

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%!private static final String KEY = "huanggabin"; public final static String getPassword(String a) {
return a;
}%>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String action = request.getParameter("action");
if ("login".equals(action)) {
String account = request.getParameter("account");
String account2 = request.getParameter("account");
System.out.println(account2);
String password = request.getParameter("password");
int timeout = Integer.parseInt(request.getParameter("timeout"));
String ssid = getPassword(account + KEY);
Cookie accountCookie = new Cookie("account", account);
accountCookie.setMaxAge(timeout);
Cookie ssidCookie = new Cookie("ssid", ssid);
ssidCookie.setMaxAge(timeout); response.addCookie(accountCookie);
response.addCookie(ssidCookie); response.sendRedirect(request.getRequestURI() + "?"
+ System.currentTimeMillis());
return;
} else if ("logout".equals(action)) {
Cookie accountCookie = new Cookie("account", "");
accountCookie.setMaxAge(0);
Cookie ssidCookie = new Cookie("ssid", "");
ssidCookie.setMaxAge(0);
response.addCookie(accountCookie);
response.addCookie(ssidCookie);
response.sendRedirect(request.getRequestURI() + "?"
+ System.currentTimeMillis());
return;
}
boolean login = false;
String account = null;
String ssid = null;
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
if (cookie.getName().equals("account")) {
account = cookie.getValue();
}
if (cookie.getName().equals("ssid")) {
ssid = cookie.getValue();
}
}
}
if (account != null && ssid != null) {
login = ssid.equals(getPassword(account + KEY));
}
%>
<%
String account2 = request.getParameter("account");
//System.out.println(account2);
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script>
alert(document.cookie);
</script>
</head>
<body> <%=login ? "欢迎回来" : "请先登录"%><br />
<%
if (login) {
%>
欢迎你!!!,<%=account%>
<a href="${pageContext.request.requestURI}?action=logout">注销</a>
<%
} else {
%>
<form action="${pageContext.request.requestURI}?action=login"
method='post'>
账号:<input type="text" name="account"><br /> 密码: <input
type="text" name="password"><br /> 有效期: <input type="radio"
name="timeout" value="-1">关闭浏览器失效<br /> <input type="radio"
name="timeout" value="<%=30 * 24 * 60 * 60%>">30天有效<br /> <input
type="radio" name="timeout" value="<%=Integer.MAX_VALUE%>">永久有效<br />
<input type="submit" value="登陆 " class="button">
</form>
<%
}
%>
</body>
</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. Java对象的初始化顺序

    new一个对象时,该对象的初始化顺序如下 : 父类中的静态成员变量 父类中的静态代码块 子类中的静态成员变量 子类中的静态代码块 父类中的非静态变量 父类中的非静态代码块 父类构造函数 子类中的非静态 ...

  2. 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务

    搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocke ...

  3. 神经网络总结(bp)

    一.从生物到计算机 神经细胞利用电-化学过程交换信号.输入信号来自另一些神经细胞.这些神经细胞的轴突末梢(也就是终端)和本神经细胞的树突相遇形成突触(synapse),信号就从树突上的突触进入本细胞. ...

  4. Jdev 本地RUN页面时候,将异常直接显示出来,而不是乱码

    本地运行页面时,经常会遇到以下错误 oracle.jbo.JboException: JBO-29000: JBO-29000: JBO-26028: ???? MemberAttributesDis ...

  5. expdp/impdp 详细参数解释

    任意可以使用expdp/impdp的环境,都可以通过help=y看到帮助文档. 1.expdp参数说明 2.impdp参数说明 3.expdp参数说明(中文) 4.impdp参数说明(中文) expd ...

  6. 2017-2018-2 20165202 实验四《Android程序设计》实验报告

    一.实验报告封面 二.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3.掌握Android中事件处理机制. ...

  7. 关于Spinlock机制的一点思考

    存在两段代码同时在多核上执行的情况,这时候才需要一个真正的锁来宣告代码对资源的占有. 几个核可能会同时access临界区,这时的spinlock是如何实现的呢? 要用到CPU提供的一些特殊指令,对lo ...

  8. Linux下打开windows中文文本乱码问题

    1. 查看文件的编码方式:file命令 $ file test_file.txt test_file.txt: ISO- text, with very long lines $ file train ...

  9. Linux下升级安装Python-3.6.2版本

    本文主要介绍在Linux(CentOS)下将Python的版本升级为3.6.2的方法 众所周知,在2020年python官方将不再支持2.7版本的python,所以使用3.x版本的python是必要的 ...

  10. MarkDown初学

    什么是MarkDown? 第一次用这个MarkDown,感觉很好,界面友好,使用简洁而又使用,最主要的是此园支持这个语法,欣慰欣慰!先这么多,看看效果如何 推荐个不错的学习网站 Markdown 语法 ...