`

实现Web程序的自动登录

阅读更多

声明:文章转载自http://www.cnblogs.com/nokiaguy/archive/2008/06/05/1214695.html

 

有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie是最简单的身从验证。

如果用户第一次登录,可以将用户名作为Cookie写到本地,代码如下:

 

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Cookie cookie = new Cookie("user", user);
cookie.setMaxAge(
365 * 24 * 3600);
cookie.setPath(
"/");
response.addCookie(cookie);


    当用户再次访问程序时,服务端程序应该检测这个Cookie是否存在,代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
    if(cookie.getName().equals(user))
    {
       
// 如果user Cookie存在,进行处理
        break;
    }
}


    尽管从客户端可以获得User Cookie,但这上Cookie可能存在很长时间,而且仅凭这个Cookie就自动登录并不安全,因此,可以在服务端使用一个Session来管理用户。也就是当第一次登录成功后,就创建一个Session,并将用户的某些信息保存在Session顺。代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->HttpSession session =request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(
2 * 3600);  // Session保存两小时


    
当再次访问程序时,确定了cookie存在后,就会继续验证User Session的存在,代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
    if(cookie.getName().equals(user))
    {
       
if(session.getAttribute(user) != null)
        {
           
// 直接forward到主界面
           break;
        }
        else
        { 
           
// forward到登录界面
         }
     }
}


    虽然上面的代码可以很好地实现自动登录功能,但是当浏览器关闭,再次启动后,由于Servlet用于保存Session IDJSESSIONID Cookie是临时的(也就是说不是持久Cookie,当浏览器关闭后,这个Cookie就会被删除),因此,需要将JSESSIONID进行持久化。代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->HttpSession session = request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(
2 * 3600);  // Session保存两小时
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(
2 * 3600);  // 客户端的JSESSIONID也保存两小时
session.setMaxInactiveInterval(interval)
cookie.setPath(
"/");        
response.addCookie(cookie);

 

如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。

如果我们自已加一个JSESSIONID Cookie,在第一次访问Web程序时,HTTP响应头有两个JSESSIONID,但由于这两个JSESSIONID的值完全一样,因此,并没有任何影响。如果在响应头的Set-Cookie字段中有多个相同的Cookie,则按着pathname进行比较,如果这两个值相同,则认为是同一个Cookie,最后一个出现的Cookie将覆盖前面相同的Cookie,如下面的两个Cookie,最后一个将覆盖前一个:

Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web

Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web

    由于下面两个Cookiepath不同,因此,它们是完全不同的两个Cookie

Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1

Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2

分享到:
评论

相关推荐

    实现Java Web程序的自动登录

    实现Java Web程序的自动登录 实现Java Web程序的自动登录

    Web程序设计13 Web程序设计13 Web程序设计13 Web程序设计13

    Web程序设计是构建和维护互联网应用程序的关键领域,它涵盖了多种技术和工具,用于创建交互式的、动态的、用户友好的网站。在这个主题中,"Web程序设计13"可能指的是一个课程或者系列教程的第13个部分,着重于进一步...

    Python实现Web UI自动化测试实战-Chapter-12

    在本章"Python实现Web UI自动化测试实战-Chapter-12"中,我们将深入探讨如何利用Python语言进行高效的Web用户界面(UI)自动化测试。这一领域对于软件开发和测试团队至关重要,因为它能节省大量手动测试的时间,提高...

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+...

    使用Java servlet实现自动登录退出功能

    使用Java Servlet实现自动登录退出功能是Web应用程序中一个非常重要的功能,本文将详细介绍如何使用Java Servlet实现自动登录退出功能。 知识点1:了解Java Servlet Java Servlet是一个Java类库,用于开发基于Web...

    web程序自动部署

    该小程序可实现web项目的单机自动发布、集群自动发布。 原理:从svn down代码、ant编译、打包项目、上传zip包、代码同步、解压、重启web容器 由于开发的比较着急,代码写的有点乱、忘谅解,仅供参考。 代码分为两...

    Web程序设计 第5版

    《Web程序设计 第5版》是一本深入探讨Web开发技术的专业书籍,主要针对希望学习或提升Web应用程序设计技能的读者。在当今互联网时代,Web程序设计是不可或缺的技术领域,涵盖前端交互、后端处理以及数据库集成等多个...

    C# 路由器WEB管理自动登录

    本主题聚焦于“C#路由器WEB管理自动登录”,这是一个常见的需求,特别是在自动化网络管理和监控场景下。以下是对这个主题的详细解释: 一、C#基础知识 C#是由微软公司开发的一种面向对象的编程语言,它具有类型安全...

    使用JavaScript实现Web程序中多个文本框的批量选择、批量修改

    的确,无论是登录信息还是查找信息,Web程序都要比Excel麻烦很多。其中,不能方便地批量更新一直是用户抱怨较多的地方。最近,我使用纯Javascript实现了一个批量修改文本框中的数据的功能,拖动鼠标即可选择页面上...

    基于Python+Selenium的web自动化测试框架的设计与实现.doc

    web自动化测试是指使用自动化测试工具来测试web应用程序的功能和性能。本文对web自动化测试进行了详细的阐述和实现。 9. 自动化测试框架的设计 自动化测试框架的设计是指如何设计和实现一个高效的自动化测试框架。...

    java web实现自动登录功能

    Java Web 实现自动登录功能是指在 Web 应用程序中实现用户自动登录的功能,这样可以提高用户体验和效率。本文将详细介绍 Java Web 实现自动登录功能的思路和实现方法。 一、自动登录功能的实现思路 自动登录功能的...

    簡單實現在線安裝Web程序

    总之,"簡單實现在線安裝Web程序"是一个涵盖广泛技术领域的话题,包括Web服务器配置、数据库管理、安全性、自动化脚本编写和用户体验设计。通过理解和掌握这些知识点,你可以创建一个高效、安全且易于部署的Web应用...

    Web实现注册登录功能源代码

    以上就是实现Web注册登录功能的核心知识点,实际开发中还需要考虑性能优化、用户体验、接口设计、API安全等问题。通过Lux_Sun在CSDN博客分享的源代码,你可以深入学习并实践这些技术,提升自己的Web开发能力。

    [零成本实现Web自动化测试-基于Selenium和Bromine].温素剑.扫描版

    《零成本实现Web自动化测试-基于Selenium和Bromine》是温素剑撰写的一本技术书籍,专注于介绍如何在不产生额外费用的情况下,利用开源工具进行高效的Web自动化测试。书中的内容涵盖了一系列与Web自动化测试相关的...

    web安装程序安装程序类

    在IT行业中,Web安装程序是用于自动化Web应用程序部署的关键工具。它们简化了复杂的过程,如安装数据库、配置IIS(Internet Information Services)站点以及编辑配置文件。本文将深入探讨"Web安装程序安装程序类"这...

    小型web程序实例DAO

    这个"小型web程序实例DAO"是一个教学或实践项目,它演示了如何在Web应用程序中使用DAO来处理数据存取操作。下面将详细介绍DAO模式以及在Web程序中的应用。 DAO模式的核心思想是将业务逻辑与数据存取操作分离,这样...

    Web应用程序结构:原理、协议及实现

    理解Web应用程序的结构、原理、协议以及实现方法是开发高效、安全和可扩展的Web应用的关键。 一、Web应用程序的结构 1. 客户端-服务器架构:这是最基础的Web应用模型,用户通过浏览器(客户端)向服务器发送请求,...

    C#程序自动更新

    本示例("C#程序自动更新")探讨了如何在C#应用程序中实现一个简单的自动更新功能。 首先,我们要理解自动更新的基本流程。这个过程通常包括以下几个步骤: 1. **检查更新**:应用程序启动时或用户触发时,程序会...

    web程序

    将Web程序与单片机结合起来,可以实现远程控制、数据采集等多种功能,极大地拓展了应用的可能性。 【Web程序开发】: Web程序主要基于HTTP或HTTPS协议,通过浏览器进行访问。开发Web程序通常涉及前端和后端两个部分...

    Web程序实现桌面提醒

    "Web程序实现桌面提醒" 在Web程序中,实现桌面提醒是一个非常有用的功能,对用户来说可以非常方便最新的信息。本文将介绍如何在Web程序中实现桌面提醒,包括Popup的特性、创建Popup、显示多个Popup、知道有新帖子等...

Global site tag (gtag.js) - Google Analytics