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
相关推荐
在Web开发中,Cookie和Session是两种非常重要的用户状态管理机制。它们被广泛用于跟踪用户的登录状态、个性化设置等,确保用户在不同页面之间切换时能够保持一致性体验。接下来,我们将详细探讨Cookie和Session的...
**定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),这些信息被封装在小文本文件中,称为Cookie。这种机制使得网站...
本文将深入探讨Cookie和Session的工作原理、应用场景以及如何在Java Web项目中进行有效利用。 **Cookie** Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,用于在客户端和服务器之间传递状态信息。它...
总结来说,这个实验旨在帮助开发者理解如何在ASP.NET+C#环境中利用Cookie和Session进行用户状态管理,这对于构建具有用户登录功能的Web应用至关重要。通过实践,开发者可以更好地掌握这两种技术的使用,以及它们在...
- **Cookie** 机制采用了客户端保持状态的方案。这意味着用户的浏览器将存储特定的信息(即 Cookie),当用户访问网站时,这些信息会被发送到服务器。 - **Session** 机制则采用了服务器端保持状态的方案。在这种...
- **跨站会话管理**:利用Session来维持用户的会话状态,确保用户在不同页面间的操作能够保持一致性和连贯性。 #### 四、Cookie的操作方法 - **创建Cookie**: - 通过`new Cookie(String name, String value)`...
在IT行业中,尤其是在Web开发领域,Cookie和Session是两种非常重要的技术,用于管理用户状态和保持会话。这里我们深入探讨这两个概念以及它们在Java Web中的应用。 首先,Cookie是客户端存储的小型文本文件,由...
Cookie 和 Session 是两种常见的用户身份验证和会话管理机制,它们在Web开发中扮演着重要角色,用于跟踪用户的在线状态和存储用户数据。下面将详细阐述它们的异同以及如何在集群环境中进行共享。 首先,Cookie 是一...
在Web开发中,Cookie和Session是两种非常重要的用户身份管理和会话跟踪技术。它们都是用来在客户端和服务器之间存储和传递信息的方式,但各有特点和适用场景。本篇将通过具体的示例代码来深入理解Cookie和Session的...
Cookie适用于简单的用户偏好设置和轻量级的数据存储,而Session则更适合处理复杂的用户会话管理和需要服务器端存储的数据。在实际应用中,开发者需要根据具体需求合理选择使用Cookie还是Session,或者两者结合使用,...
1、Cookie和Session简介与区别Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪Cookie是完全保持在客户端的如:IE firefox...
在Web开发中,Cookie和Session是两种常见的用户身份验证和会话管理机制。它们用于跟踪用户的登录状态,确保用户在浏览网站时能够保持个性化设置和安全性。以下是对这两个概念的详细解释及其在登录、成功页面和退出...
在Web开发中,Cookie和Session是两种非常重要的用户身份验证和会话管理机制。它们都是用来跟踪用户状态,尤其是在无状态的HTTP协议中保持用户登录状态的关键技术。下面将对Cookie和Session进行深入剖析。 首先,...
3. **共同目标**:虽然Session和Cookie有不同的特性和应用场景,但它们的共同目标都是为了保持用户的会话状态,提高用户体验。 #### 四、实际应用案例 假设一个在线购物网站: - 用户登录后,服务器为该用户创建...
在JavaWeb开发中,Cookie和Session是两种常见的用户会话管理技术,用于在客户端和服务器之间传递信息。本文将深入探讨这两个概念,并通过一个简单的登录案例来阐述它们的使用。 首先,Cookie是服务器发送到用户...
Cookie是一种在客户端和服务器之间传递信息的技术。它主要用来存储用户的状态信息,比如登录状态、购物车等。以下是一些关于Cookie的关键知识点: 1. **存储位置**:Cookie是以文本文件的形式存储在用户的计算机上...
本文将深入探讨如何在C#环境中,特别是在Visual Studio 2005环境下,利用Cookie和Session这两种常见的用户状态管理机制来实现登录功能。这两种技术都是Web开发中的核心概念,对于构建安全、高效的应用至关重要。 ...
Servlet不仅能够生成动态内容,还能进行会话管理,其中最常用的就是Cookie和Session。本文将深入探讨Servlet如何管理和利用这两种技术进行会话跟踪。 **Cookie管理** Cookie是一种客户端存储机制,用于在用户的...
- 当需要在客户端保持长期状态,或者需要跨站点共享信息时,Cookie是合适的选择。 - 如果需要保护敏感信息,避免在客户端存储,应优先使用Session,因为它将数据保存在服务器端。 - Cookie占用客户端资源,Session...
4. **Web开发中的状态管理方案**:特别是在客户端与服务器之间保持状态的方法,用于跟踪用户的活动和维护会话数据。 5. **具体的存储结构**:在Web应用中,用于存储与特定用户会话相关的数据结构。 6. **特定编程...