sonnylys
2010-07-06 13:37
2010年07月04日 22:18 "tianqiq"的内容
我不知道你单点登录为什么要这要做。现在一般的方案是用memcache等做分布式缓存。具体怎么做你可以去

到网上找找 ...

有没这方面的具休方案哦,能否提供参考参考??

tianqiq
2010-07-06 14:12
我简单说下原理:

我们知道,事实上服务器怎么找到一个用户的session是通过一个储存在

客户的一个cookie session_id来进行的。 一般情况下。我们有多个站

时。用户访问的每一个站都会是一个不同的session__id 。这是

http服务器的基本工作。 那么如果能把各个站的session_id统一起来。

并把session放到一个独立地方。是不是就可以使多个站共享session了。

要实现也非常简单的。 比如说a,b,c3个站。我想让用户登陆任何一个站

都能同步到另外2个站。 我可以这样做。当用户首次访问我们a站上的

index时。我们在自己设置一个cookie作为这个客户的session_id(注意

这里指的不是http服务器默认的那个session_id,其实也行)我们可以

在index的页面中把生产的这个session_id 发送给b,c上的一个处理页

面(比方说我们在index中嵌入一个jsp页面什么不输出,就设置一个

cookie )并也将这个session_id设置到用户浏览器cookie中。 这个时

候,我们的每一个站都有了一个相同的cookie了session_id。我们可以

将这个cookie作为标示,将用户的信息,保存至一个map里。这个地

方map每个站都可以访问。我们产生的sessin_id做为key。用户的信息作为value。 我们的每一个站只用拿我们产生的那个cookie session_id

就去那个map里取用户的信息。而memcache就是一个这样的分布式缓存

那key取value 很适合做这个。

可能我表达不行, 不晓得你懂了没。

sonnylys
2010-07-06 14:47
2010年07月06日 14:12 "tianqiq"的内容
我们可以

在index的页面中把生产的这个session_id 发送给b,c上的一个处理页

面(比方说我们在index中嵌入一个jsp页面什么不输出,就设置一个

cookie )并也将这个session_id设置到用户浏览 ...

谢谢tianqiq的详细描述。

当a,b,c为跨主域时怎么做到使用相同的cookie? 当访问a时,重定向至b,然后再重定向至c?

还有个不是很确定的问题:假如域名www.abc.com 部置了同样的应用主机x和主机y来做集群。当用户访问www.abc.com时在x产生了session id 产生cookie给客户端,当客户再访问www.abc.com请求指向了y,y是否会用在x产生的session id来生成一个session?

tianqiq
2010-07-07 10:59
看来我的表达方式确实是差了。

比方说a站的一个页面: login

在login的页面里有这样一段代码.

<img src="www.b.com/setcookie.jsp?session_id=(统一产生的id)" sytle="displsy:none"/>

<img src="www.c.com/setcookie.jsp?session_id=(统一产生的id)" sytle="displsy:none"/>

<img src="www.d.com/setcookie.jsp?session_id=(统一产生的id)" sytle="displsy:none"/>

<img src="www.e.com/setcookie.jsp?session_id=(统一产生的id)" sytle="displsy:none"/>

而setcookie.jsp他的作用主要做用就是当根据传递过来的session设置这个session_id到客户端浏览器。

这个时候b,c,d,e是不是都有了一个统一的session_id了。不过在b,c,d,e的setcookie.jsp里应该设置p3p头 。

其实也就在http响应里,添加一个响应头。说明我是好人。 请接受我的cookie 呵呵。

不然在ie下是无法成功的。ie默认不接受第3方cookie的。

sonnylys
2010-07-07 21:26
2010年07月07日 10:59 "tianqiq"的内容
不过在b,c,d,e的setcookie.jsp里应该设置p3p头 。

其实也就在http响应里,添加一个响应头。说明我是好人。 请接受我的cookie 呵呵。

不然在ie下是无法成功的。ie默认不接受第3方cookie的。 ...

我的知识点在这里断层,谢谢tianqiq的回答,我先了解下p3p头。非常感谢。

猜你喜欢
3Go 上一页 1 2 3