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

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

怎样实现多个域名 共享session

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问: wASX\D }  
0 u2Ny&6w  
例如: ayeCi8  
$L\@da?  
项目代码都在 website 这个目录下,且是单一入口文件架构方式。 Qt~B#R. V  
HU9p !I.  
现在的服务器配置是 (nginx)的配置方式是 o3\,gzJ  
}AJ L,Q7q  
ServerName www.project.com, a.project.com, b.project.com }DHUTP2;yz  
+f$Z-U1H/  
Root 都指向 website 目录 H`5Ct  
^vW$XRnt  
现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。 .l=p[BI  
`-u7 I  
问题来了 xU:4Y0y8  
B.RRdK+:  
怎样实现session的共享呢? \OA L Or  
<r3Jf}%tT  
搜了下,网上的其中的一个解决方案是将session_id 放到cookie 里面, 然后在session_start 之前取出cookie中的session_id,手动设置session_id。 zQ<88E&&Xs  
506V0]`/  
还有说,使用 session_get_cookie_params 方法,设置 domain 为 .project.com f B7ljg  
DyIV/  
这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功! ki3 HcV  
那么 SBz/VQ  
BCBUb  
像这种的架构方式一般都是怎样实现的呢? w?S8@|MK  
#@E(<Pu4`  
更新 0Nt%YP  
PqI![KxZW  
现在采用的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功能的容器里) PFn[[~5V  
理论是:不论什么语言写的,或者framework写的session应该都可以共享 `LHfAXKN  
qZ]VS/5A  
如果你所有的app都是使用相同的语言和framework,这样你session共享的代价是最小的 DDCQAf  
(( IBaEq  
如果你已经分成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设置就可以了