dchaoxiong 发表于 2013-2-6 08:36:44

PHP网站和JSP网站单点登录

条件

[*]php部署在apahche服务器中,
[*]jsp部署在Tomcat中,到jsp的请求是从apache中代理转跳过去的.
[*]php和jsp请求的sessionid的名称不同.


需求:

[*]用户在jsp网站登录或退出时,能同步到php网站相应的登录或退出.
[*]做到在不同服务器中同时登录或退出.
[*]做到一个用户能同时单点登录到不同的web服务器中.



解决方法:
由于本需求的php和jsp的sessionid各不相同,
因此采用浏览器cookie的机制,请求时把cookie里面的值发送到各自服务器;
即使把登录后的各自的sessionid先保存到cookie里,在下一次请求时再把cookie里的值一同请求包发送出去,供服务器识别该请求的用户是否已登录.
处理的难点:对两个服务器的请求能共享同一个cookie;请求jsp时,在jsp服务端同时请求php,并把请求的cookie值保存到jsp的cookie中,达到共享cookie值的目的:


示意图:




详细步骤:

[*]客户端请求jsp服务器;
[*]jsp服务端请求php,把php返回的sessionid或cookie值增加到jsp的返回包中(注意设置好cookie的作用域和路径,前端浏览器共享cookie);
[*]请求jsp或php时,共享的cookie将发送到相应的服务器;
[*]被请求的服务器将根据cookie值判断该请求的用户是否已登录;



衍生问题:

[*]cookie的作用域不同时怎么共享cookie或怎么设置各自的cookie值?(比如:www.jsp.com 和 www.php.com怎么样共享或分别设置)
[*]在Tomcat里面,前端cookie怎么样采用自己的sessionid的名字,而不采用默认的JSESSION=....................
页: [1]
查看完整版本: PHP网站和JSP网站单点登录