您的位置:首页 > 编程语言 > Java开发

为站点增加自动登录和单点登录功能

2018-01-14 23:35 351 查看
一、自动登录功能与实现原理

需求分析

用户一旦使用浏览器登录某个站点和关闭浏览器后,在以后两个星期内,只要用户启动该浏览器访问该站点的任何页面时,都将自动完成登录。

很显然,该功能要求浏览器一旦登录以后的两个星期内,浏览器所在客户机上必须保留有用户帐号信息,并且,浏览器在以后设定的时间期限内访问该站点时,必须自动向服务器提交保留在客户机上的用户帐号信息。

实现原理

想一想:用什么样的Web技术可以实现这样的功能呢?



二、Set-Cookie2响应头字段

Set-Cookie2头字段用于指定WEB服务器向客户端传送的Cookie内容,但是按照Netscape规范实现Cookie功能的WEB服务器,使用的是Set-Cookie头字段,两者的语法和作用类似。

Set-Cookie2头字段中设置的cookie内容是具有一定格式的字符串,它必须以Cookie的名称和设置值开头,格式为“名称=值”,后面可以加上0个或多个以分号(;)和空格分隔的其它可选属性,属性格式一般为“属性名=值”。

举例:Set-Cookie2: user=it315; Version=1; Path=/

除了“名称=值”对必须位于最前面外,其它的可选属性的先后顺序可以任意。

Cookie的名称只能由普通的英文ASCII字符组成,浏览器不用关心和理解Cookie的值部分的意义和格式,只要WEB服务器能理解值部分的意义就行。

大多数现有的WEB服务器都是采用某种编码方式将值部分的内容编码成可打印的ASCII字符,RFC 2965规范中没有明确限定编码方式

Set-Cookie2头字段中的属性

name字段为一个cookie的名称。

value字段为一个cookie的值。

domain字段为可以访问此cookie的域名。

path字段为可以访问此cookie的页面路径

expires/Max-Age 字段为此cookie超时时间

Size字段 此cookie大小。

http字段cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie

secure 字段 设置是否只能通过https来传递此条cookie

三、自动登录





增加自动登录的安全性

保存在浏览器所在客户机上的信息必须尽可能的安全,即使被人窃取,也无法识别其中的信息。

Cookie值采用如下算法来生成:

username + “:” + expiryTime + “:” +

Md5Hex(username + “:” + expiryTime + “:” + password + “:” + key)

生成和解析Cookie值的算法是配对的,最好是放在同一个类中编写。

有个开源加密的java类:TokenBasedRememberMeServices.java
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cookie java