上一主题下一主题
关键字
主题 : 怎样实现多个域名 共享session
级别: 北风技术菜鸟

UID: 470400
精华: 0
发帖: 400
威望: 1816 点
学点: 965 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-06-27
最后登录: 2015-04-29
楼主  发表于: 2015-02-27 21:47||

怎样实现多个域名 共享session

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问: !|(-=2 `  
l$KA)xbI  
例如: <sbu;dQ`  
: $1?i)  
项目代码都在 website 这个目录下,且是单一入口文件架构方式。 s S+MqBh&I  
b=C*W,Q_#  
现在的服务器配置是 (nginx)的配置方式是 u,ho7ht3(  
gjyYCjF  
ServerName www.project.com, a.project.com, b.project.com bIDj[- CDG  
M)Z7k/=<P  
Root 都指向 website 目录 n` _{9R  
^CYl\.Y@  
现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。 8 /]S^'>  
K!%+0)A  
问题来了 6Igz:eX  
&J]K3w1p  
怎样实现session的共享呢?  \!X8   
n+9=1Oo"  
搜了下,网上的其中的一个解决方案是将session_id 放到cookie 里面, 然后在session_start 之前取出cookie中的session_id,手动设置session_id。 C3f' {}  
9<?M8_  
还有说,使用 session_get_cookie_params 方法,设置 domain 为 .project.com KK4`l}Fk:n  
e2Pcm_Ahv*  
这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功! .hb:s,0mP  
那么 ;4\ 2.* s  
8 FK/~,I  
像这种的架构方式一般都是怎样实现的呢? !*&V- 4  
wW P}C D  
更新 -7[@R;FS  
,-LwtePJ0  
现在采用的session存储方式是使用数据库,
此帖悬赏结束
最佳答案: 2 学点
最佳答案获得者: dhx840828284
级别: 北风资深评论员


UID: 470398
精华: 0
发帖: 3024
威望: 3862 点
学点: 8642 点
贡献: 90 点
好评: 0 点
学币: 112 个
注册时间: 2014-06-27
最后登录: 2015-04-07
沙发(1楼)  发表于: 2015-02-27 21:49||

把session理解成db,把你希望共享的数据存在db里面(或者具有db功能的容器里) :I.mGH!^  
理论是:不论什么语言写的,或者framework写的session应该都可以共享 OR P\b  
%Bj\W'V&p  
如果你所有的app都是使用相同的语言和framework,这样你session共享的代价是最小的 {r,.!;mHu  
; }I:\P  
如果你已经分成n个app了,为什么还要共享session,共享session的结果就是耦合,那你分app的目的何在?分成N个app,然后把sso搞定就可以了
最佳答案奖励: (+2) 学点
级别: 北风资深工程师

UID: 472685
精华: 0
发帖: 1930
威望: 1946 点
学点: 3280 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-08
板凳(2楼)  发表于: 2015-02-27 21:48||

cookie,db,memcache,redis以及任何能够存储的地方
热心助人奖励: (+1) 学点
级别: 北风资深工程师

UID: 472681
精华: 0
发帖: 1791
威望: 1815 点
学点: 2095 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-10
最后登录: 2015-04-07
地板(3楼)  发表于: 2015-02-27 21:49||

cookie有domain属性,只给要共享的cookie设置就可以了