from http://blog.csdn.net/kingtrue1/archive/2009/07/29/4389814.aspx
声明:引用本文时请注明出处。
问题描述:有些WEB业务系统,比如物流、ERP等用户比较习惯把浏览器一直打开,当有新业务发生时,用户会即时录入,当通过SESSION时,由于会话已过期,经常会导致提交失败,用户不得不又要重新登陆并录入单据,影响系统的使用。
分析:做WEB开发的用户基本都会遇到保持用户会话的问题,由于HTTP协议是一个无状态的协议,所以我们不得不利用Cookie(客户端方式)或利用SESSION(服务器方式,新打开的浏览器时会自动创建一个SESSIONID,名称随应用服务器而不同),用Cookie时不安全,因为它是附在HTTP请求的头信息里的,在浏览器地址栏中输入“javascript:document.write(document.cookie)”可显示COOKIE信息(IE6和IE7中均可以),Session又受服务器限制,一般会限制十几至几十分钟以内。下面介绍一种折衷的办法,利用Cookie与Session相结合的办法,保持服务器一直在线。
解决办法:(JAVA代码)
1,用户登陆时,在保存SESSION信息同时,将登陆信息以加密的方式保存到Cookie中。
//以下为代码片段,拷贝后需要处理
public static String checkAuth(HttpServletRequest request,HttpServletResponse response,String mark,String userid,String pwd){
UserAuthClient userAuth= new UserAuthClient();
String info=userAuth.getUserAuthHttpPort().check(userid,pwd,request.getRemoteAddr());
if(info.equals("ok")){
HttpSession session=request.getSession();
DESPlus des;
try {
des = DESPlus(request.getRemoteAddr());//加密密码为IP地址
setCookie(request,response,"SN",des.encrypt(userid+";"+pwd));//设置Cookie
session.setAttribute("Employee", employee);//设置SESSION
} catch (Exception e) {
e.printStackTrace();
}
}
return info;
}
2,验证用户
//查看用户存根是否存在,如果存在通过用户存根直接通过存根创建用户登陆信息
public static Employee getEmployee(HttpServletRequest request,HttpServletResponse response){
//用户是否已经登陆,如果已经登陆,则返回用户信息
HttpSession session=request.getSession();
Employee employee=(Employee)session.getAttribute("Employee");
if(employee!=null)return employee;//验证成功
DESPlus des;
try {
des = new DESPlus(request.getRemoteAddr());
String SN=getCookiebyName(request,"SN");
if(SN==null)return null;
SN=des.decrypt(SN);
if(SN==null)return null;
String [] strs=SN.split(";");
if(strs==null || strs.length!=2)return null;
String userid=str[0];
String pwd=str[1];
String isok=checkAuth(request,response,userid,pwd);//重新登陆,成功时会创建会话
if(isok.equals("ok")){
return (Employee)session.getAttribute("Employee");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return employee;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kingtrue1/archive/2009/07/29/4389814.aspx
相关推荐
1、Cookie和Session简介与区别Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪Cookie是完全保持在客户端的如:IE firefox...
Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用 Setcookie(string name, string value, int expire,string path, string domain, int secure); (1)、必须在...
Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用 Setcookie(string name, string value, int expire,string path, string domain, int secure); (1)、...
Cookie、Session、Token、JWT 是常用于身份验证和状态管理的概念和技术。它们在Web应用程序中起到关键的作用。 Cookie:Cookie 是服务器在客户端存储的小型数据文件。它通常用于在客户端存储用户的身份验证信息或...
本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下: part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话。 两者...
WEB16_session&cookie。 案例一、记录用户的上次访问时间---cookie 案例二、实现验证码的校验----session。 1.服务器端向客户端发送一个Cookie 1)创建Cookie: Cookie cookie = new Cookie(String cookieName,...
Django cookie 与 session Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。 浏览器将这些信息...
在cookie-session方案中,cookie内仅包含一个session标识符,而诸如用户信息、授权列表等都保存在服务端的session中。如果把session中的认证信息都保存在JWT中,在服务端就没有session存在的必要了。当服务端水平...
web编程解决无状态会话 客户端再次访问web服务器之后后者不知道前者曾经访问过 的两种技术:session 和 cookie
关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么是Cookie 其实简单...
会话(Session)跟踪是Web...Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。
akka-http-session使用cookie或自定义标头+本地存储提供Web和移动应用程序中客户端会话管理的指令,并具有可选的格式支持。 提供了以及代码示例(使用Java,但易于转换为Scala),该示例回答了有关会话如何工作,...
hapi-auth-signed-cookie Cookie 认证插件维护者: 很大程度上基于差异这与 hapi-auth-cookie 的区别在于 cookie 可在客户端访问,这使其能够从 cookie 中获取会话数据。 您可以解码 cookie 中的数据,例如: const ...
但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话: Cookies 一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的 cookie,对于客户端的后续请求可以使用接收到的 ...
Day02回顾 1、关于正则解析 1、分组(想要抓取什么内容就加小括号()) 2、正则方法 p = re.compile('....') ... 结果 :[(),(),(),()] ...5、cookie和session cookie :客户端 session :Web服务器
纯JSP演示Cookie自动登录(完整工程。主要实现勾选自动登录后, 哪怕服务器重启后session丢失,靠客户端COOKIE仍然正常登录并刷新COOKIE。...现为WEB,可改造为提供android 和ios下的httpclient保持长久登录状态的方式。
cookie和session是web开发新手容易搞混的两个概念,弄清楚两者有助于对web交互更好的理解。个人认为session和cookie的区别主要有如下几点: cookie 信息保存在客户端 具体实现由客户端负责 数据大小和数量一般有...
经典的处理方法是客户端设置包含随机唯一Session标识的Cookie,被标识的Session数据保存到服务端。 扩展有状态服务 当扩展服务的时候,你肯定有三种选择: 不同服务端同步Session数据 不同服务端连接单点中心...
原理: 用户通过浏览器访问web服务器时,服务器会给客户端发一些信息,这些信息保存在Cookie中,当浏览器在次访问服务器时,就会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。 注意:Cookie...
用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多...