为站点增加自动登录和单点登录功能
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
需求分析
用户一旦使用浏览器登录某个站点和关闭浏览器后,在以后两个星期内,只要用户启动该浏览器访问该站点的任何页面时,都将自动完成登录。
很显然,该功能要求浏览器一旦登录以后的两个星期内,浏览器所在客户机上必须保留有用户帐号信息,并且,浏览器在以后设定的时间期限内访问该站点时,必须自动向服务器提交保留在客户机上的用户帐号信息。
实现原理
想一想:用什么样的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
相关文章推荐
- 修改原官方易语言模板增加自动登录功能【附模板下载】
- 网站自动登录功能的设计
- Android——SharedPreferences实现登录界面的记住密码和自动登录功能
- SSO单点登录系列5:cas单点登录增加验证码功能完整步骤
- 在Eclipse/MyEclipse增加自动提示功能
- spring和mybatis集成,自动生成model、mapper,增加mybatis分页功能
- PDF 补丁丁 0.6.0.3413 版发布(修复提取图片问题,增加自动检查软件更新功能)
- SWING实现新浪微博客户端(1)自动登录功能 (2)提取关注好友信息
- 自动升级系统的设计与实现(续2) -- 增加断点续传功能 (附最新源码)
- 登录时简单的记住密码和自动登录功能实现
- 通过Swashbukle给DotNet Core Web API 增加自动文档功能
- ECMALL 增加上传图片自动增加水印功能
- 增加spyder模块代码提示功能和spyder 代码自动补齐设置方式
- 使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
- 使用ssm框架完成自动登录功能
- Jquery 实现 “下次自动登录” 记住用户名密码功能
- javaWeb--自动登录功能的完成
- Android开发之自动登录功能的实现
- JS实现两周内自动登录功能