`
momodog
  • 浏览: 103105 次
  • 性别: 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

分享到:
评论

相关推荐

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

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

    PHP100视频教程 (三十二、PHP5中Cookie与 Session详解)

    Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用 Setcookie(string name, string value, int expire,string path, string domain, int secure); (1)、必须在...

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

    Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用 2、Cookie的配置与应用  Setcookie(string name, string value, int expire,string path, string domain, int secure);  (1)、...

    Cookie、Session、Token、JWT

    Cookie、Session、Token、JWT 是常用于身份验证和状态管理的概念和技术。它们在Web应用程序中起到关键的作用。 Cookie:Cookie 是服务器在客户端存储的小型数据文件。它通常用于在客户端存储用户的身份验证信息或...

    Python Web框架之Django框架cookie和session用法分析

    本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下: part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话。 两者...

    WEB16-session&cookie-源代码.rar

    WEB16_session&cookie。 案例一、记录用户的上次访问时间---cookie 案例二、实现验证码的校验----session。 1.服务器端向客户端发送一个Cookie 1)创建Cookie: Cookie cookie = new Cookie(String cookieName,...

    Django cookie 与 session

    Django cookie 与 session Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。 浏览器将这些信息...

    .net core 3.1 WepApi 前后分离身份验证及webapi调试demo ,jwt+swagger

    在cookie-session方案中,cookie内仅包含一个session标识符,而诸如用户信息、授权列表等都保存在服务端的session中。如果把session中的认证信息都保存在JWT中,在服务端就没有session存在的必要了。当服务端水平...

    session和cookie

    web编程解决无状态会话 客户端再次访问web服务器之后后者不知道前者曾经访问过 的两种技术:session 和 cookie

    Python爬虫番外篇之Cookie和Session详解

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么是Cookie 其实简单...

    cookie 详解

    会话(Session)跟踪是Web...Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。

    akka-http-session:Web和移动客户端akka-http会话,具有可选的JWT支持

    akka-http-session使用cookie或自定义标头+本地存储提供Web和移动应用程序中客户端会话管理的指令,并具有可选的格式支持。 提供了以及代码示例(使用Java,但易于转换为Scala),该示例回答了有关会话如何工作,...

    hapi-auth-signed-cookie:已签名的客户端 cookie

    hapi-auth-signed-cookie Cookie 认证插件维护者: 很大程度上基于差异这与 hapi-auth-cookie 的区别在于 cookie 可在客户端访问,这使其能够从 cookie 中获取会话数据。 您可以解码 cookie 中的数据,例如: const ...

    Servlet Session 跟踪

    但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话: Cookies 一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的 cookie,对于客户端的后续请求可以使用接收到的 ...

    python学习总结day03.txt

    Day02回顾 1、关于正则解析 1、分组(想要抓取什么内容就加小括号()) 2、正则方法 p = re.compile('....') ... 结果 :[(),(),(),()] ...5、cookie和session cookie :客户端 session :Web服务器

    纯JSP演示Cookie自动登录(完整工程)

    纯JSP演示Cookie自动登录(完整工程。主要实现勾选自动登录后, 哪怕服务器重启后session丢失,靠客户端COOKIE仍然正常登录并刷新COOKIE。...现为WEB,可改造为提供android 和ios下的httpclient保持长久登录状态的方式。

    PHP学习笔记之session

    cookie和session是web开发新手容易搞混的两个概念,弄清楚两者有助于对web交互更好的理解。个人认为session和cookie的区别主要有如下几点: cookie 信息保存在客户端 具体实现由客户端负责 数据大小和数量一般有...

    Node.js编程中客户端Session的使用详解

    经典的处理方法是客户端设置包含随机唯一Session标识的Cookie,被标识的Session数据保存到服务端。 扩展有状态服务 当扩展服务的时候,你肯定有三种选择: 不同服务端同步Session数据 不同服务端连接单点中心...

    Cookie与Session的介绍即使用————Cookie

    原理: 用户通过浏览器访问web服务器时,服务器会给客户端发一些信息,这些信息保存在Cookie中,当浏览器在次访问服务器时,就会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。 注意:Cookie...

    jwt简单的介绍和了解

    用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多...

Global site tag (gtag.js) - Google Analytics