`

实现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程序的自动登录

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

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

    web程序自动部署

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

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

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

    利用 web控件自动打开新浪邮箱

    程序代码比较简单,利用ms web浏览器控件实现. 读者可以参阅实现其它需要的功能.作者对web控件和com方便也是不熟悉,与大家共同进步. LonWebSite.avi是运行程序的截的. 另外,希望大家不要修改程序中的那个测试用的...

    WebUi自动化

    WebUI自动化测试必须学习的第一个程序,本程序模拟的是打开网页,输入关键字,点击搜索的过程。代码中需要修改的地方有以下几个:1、Firefox浏览器如果安装不是默认位置,请修改代码第一句的第二个参数。2、根据...

    C#实现自动升级程序(含客户端和服务端)

    程序分成UpdateServer(Web服务应用程序)和一个Client(命令行程序)。UpdateServer提供应用程序的最新版本,应用程序存放在UpdateServer下的AppCenter目录中。Client程序运行时,先从UpdateServer下载最新的版本,...

    一个实现网页的自动post的程序源代码

    一个实现网页的自动post的程序源代码,自动post,提交.

    版本自动更新程序及3种实现策略

    版本自动更新程序及3种实现策略 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上。然后建立一个XML文件,该文件列举最新版本号和所有文件及文件最后修改日期。如文件较多可以通过...

    C#.NET实现网页自动登录的方法

    用C#语言编写一个Windows Form应用程序,实现自动登录一个特定的页面。 下面以自动登录:http://localhost/Web/Login.aspx 作为例子,讲解如何模拟手工输入用户名密码并点击登录,实现自动登录。 新建一个C#应用...

    基于web的实验室管理系统(自动排课功能的实现).zip

    基于web的实验室管理系统(自动排课功能的实现).zip基于web的实验室管理系统(自动排课功能的实现).zip基于web的实验室管理系统(自动排课功能的实现).zip基于web的实验室管理系统(自动排课功能的实现).zip基于...

    C#实现的通过webservice 获取服务器端 程序实现 系统自动升级

    实现的通过webservice 获取服务器端 程序实现 系统自动升级

    C#自动更新程序源码

    c# net 2.0利用iis等web服务实现程序自动更新升级的功能。 XmlUpdate为生成服务端所有文件,目录MD5值的程序。 AutoUpdateClient为程序自动更新的客户端程序(用批处理实现自我更新)

    asp.net基于Web的办公自动化系统论文及毕业设计_开题报告

    asp.net基于Web的办公自动化系统论文及毕业设计是对四年所学的一次大检测,一般包括一个开题报告.用以介绍研究方向,描述asp...同时,开题报告也是后期程序设计与实现的主要依据.(附:程序+论文+开题+外文+答辩 全套资料)

    watir Web自动化测试框架 api

    Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...

    js前端浏览器打开本地exe程序demo(类似百度网盘效果)

    功能:在web浏览器页面上有一个按钮,点击按钮,调起本地的.exe程序客户端。通过添加注册表的方式实现该功能。 能做到什么: 1. 打开各种应用:用户可以通过点击按钮来启动本地的.exe程序客户端,从而实现打开各种...

    JAVA-Web课程设计--注册登录系统---用SSH框架整合实现注册登录系.docx

    用SSH框架整合实现注册登录系统 注册登录系统几乎是每一个web程序必须拥有的功能,因此,在本次课程设计中将其单独提取出来,并使用SSH框架的整合来实现这个系统。虽然注册和登录系统并不复杂,但这两个子系统却...

    Java Web应用程序的安全模型

    Servlet技术规范规定了两种由容器实现的Java Web应用程序的安全模型。它们分别是:声明性安全模型和程序性安全模型。  程序性安全模型是指可以在部署的时候由部署者为WEB资源配置安全限制。如:将用户放入组中...

    图书馆管理系统Web程序设计课程设计报告.doc

    洛 阳 理 工 学 院 课 程 设 计 报 告 课程名称 Web程序设计课程设计 设计题目 图书馆管理系统 专 业 计算机科学与技术 完成日期 2014.6.27 "课 程 设 计 任 务 书 " "设计题目: 图书馆管理系统 " "设计容与要求: ...

    基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip

    基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所...

Global site tag (gtag.js) - Google Analytics