`
momodog
  • 浏览: 104751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Cookie和Session保持WEB客户端始终在线

 
阅读更多

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

分享到:
评论

相关推荐

    cookie和session示例

    在Web开发中,Cookie和Session是两种非常重要的用户状态管理机制。它们被广泛用于跟踪用户的登录状态、个性化设置等,确保用户在不同页面之间切换时能够保持一致性体验。接下来,我们将详细探讨Cookie和Session的...

    Cookie、Session和Token三者的区别及使用

    **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),这些信息被封装在小文本文件中,称为Cookie。这种机制使得网站...

    javaweb之cookie和session的应用

    本文将深入探讨Cookie和Session的工作原理、应用场景以及如何在Java Web项目中进行有效利用。 **Cookie** Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,用于在客户端和服务器之间传递状态信息。它...

    asp.net-c#写的一个cookie和session登陆小实验

    总结来说,这个实验旨在帮助开发者理解如何在ASP.NET+C#环境中利用Cookie和Session进行用户状态管理,这对于构建具有用户登录功能的Web应用至关重要。通过实践,开发者可以更好地掌握这两种技术的使用,以及它们在...

    JAVA之cookie与session

    - **Cookie** 机制采用了客户端保持状态的方案。这意味着用户的浏览器将存储特定的信息(即 Cookie),当用户访问网站时,这些信息会被发送到服务器。 - **Session** 机制则采用了服务器端保持状态的方案。在这种...

    经典收藏Cookie和Session

    - **跨站会话管理**:利用Session来维持用户的会话状态,确保用户在不同页面间的操作能够保持一致性和连贯性。 #### 四、Cookie的操作方法 - **创建Cookie**: - 通过`new Cookie(String name, String value)`...

    day16_cookie&session源代码.zip

    在IT行业中,尤其是在Web开发领域,Cookie和Session是两种非常重要的技术,用于管理用户状态和保持会话。这里我们深入探讨这两个概念以及它们在Java Web中的应用。 首先,Cookie是客户端存储的小型文本文件,由...

    cookie 和 session 保存的异同

    Cookie 和 Session 是两种常见的用户身份验证和会话管理机制,它们在Web开发中扮演着重要角色,用于跟踪用户的在线状态和存储用户数据。下面将详细阐述它们的异同以及如何在集群环境中进行共享。 首先,Cookie 是一...

    Cookie与Session的示例代码

    在Web开发中,Cookie和Session是两种非常重要的用户身份管理和会话跟踪技术。它们都是用来在客户端和服务器之间存储和传递信息的方式,但各有特点和适用场景。本篇将通过具体的示例代码来深入理解Cookie和Session的...

    cookie和session

    Cookie适用于简单的用户偏好设置和轻量级的数据存储,而Session则更适合处理复杂的用户会话管理和需要服务器端存储的数据。在实际应用中,开发者需要根据具体需求合理选择使用Cookie还是Session,或者两者结合使用,...

    PHP100视频教程 32:PHP5中Cookie与 Session详解

    1、Cookie和Session简介与区别Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪Cookie是完全保持在客户端的如:IE firefox...

    利用Cookie、Session写的登录页面、成功页面、退出页面

    在Web开发中,Cookie和Session是两种常见的用户身份验证和会话管理机制。它们用于跟踪用户的登录状态,确保用户在浏览网站时能够保持个性化设置和安全性。以下是对这两个概念的详细解释及其在登录、成功页面和退出...

    Cookie与Session深入剖析图示

    在Web开发中,Cookie和Session是两种非常重要的用户身份验证和会话管理机制。它们都是用来跟踪用户状态,尤其是在无状态的HTTP协议中保持用户登录状态的关键技术。下面将对Cookie和Session进行深入剖析。 首先,...

    session与cookie的区别和联系?

    3. **共同目标**:虽然Session和Cookie有不同的特性和应用场景,但它们的共同目标都是为了保持用户的会话状态,提高用户体验。 #### 四、实际应用案例 假设一个在线购物网站: - 用户登录后,服务器为该用户创建...

    JavaWeb基础-Cookie和Session的简单使用案例

    在JavaWeb开发中,Cookie和Session是两种常见的用户会话管理技术,用于在客户端和服务器之间传递信息。本文将深入探讨这两个概念,并通过一个简单的登录案例来阐述它们的使用。 首先,Cookie是服务器发送到用户...

    cookie_session知识点

    Cookie是一种在客户端和服务器之间传递信息的技术。它主要用来存储用户的状态信息,比如登录状态、购物车等。以下是一些关于Cookie的关键知识点: 1. **存储位置**:Cookie是以文本文件的形式存储在用户的计算机上...

    基于c#实现cookie和session的登陆技术

    本文将深入探讨如何在C#环境中,特别是在Visual Studio 2005环境下,利用Cookie和Session这两种常见的用户状态管理机制来实现登录功能。这两种技术都是Web开发中的核心概念,对于构建安全、高效的应用至关重要。 ...

    Servlet对Cookie和Session的管理源码实例

    Servlet不仅能够生成动态内容,还能进行会话管理,其中最常用的就是Cookie和Session。本文将深入探讨Servlet如何管理和利用这两种技术进行会话跟踪。 **Cookie管理** Cookie是一种客户端存储机制,用于在用户的...

    Cookie与Session机制

    - 当需要在客户端保持长期状态,或者需要跨站点共享信息时,Cookie是合适的选择。 - 如果需要保护敏感信息,避免在客户端存储,应优先使用Session,因为它将数据保存在服务器端。 - Cookie占用客户端资源,Session...

    Cookie机制和Session机制

    4. **Web开发中的状态管理方案**:特别是在客户端与服务器之间保持状态的方法,用于跟踪用户的活动和维护会话数据。 5. **具体的存储结构**:在Web应用中,用于存储与特定用户会话相关的数据结构。 6. **特定编程...

Global site tag (gtag.js) - Google Analytics