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

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

怎样实现多个域名 共享session

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问: XknNb{. r  
UN;U+5,t  
例如: ?,hGKSC  
qf [J-"o  
项目代码都在 website 这个目录下,且是单一入口文件架构方式。 /9P7;1?  
[,~;n@jz  
现在的服务器配置是 (nginx)的配置方式是 ^y|`\oyqwN  
UA0( cK  
ServerName www.project.com, a.project.com, b.project.com o(3OChH  
B4m34)EOE  
Root 都指向 website 目录 %/s+-j@s:  
.)FFl  
现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。 $Nj' _G\}  
,|UwZ_.  
问题来了 f=4q]y#& X  
y,<\d/YY@  
怎样实现session的共享呢?  .^rs VNG  
Fj <a;oV  
搜了下,网上的其中的一个解决方案是将session_id 放到cookie 里面, 然后在session_start 之前取出cookie中的session_id,手动设置session_id。 SvQj'5~<  
6?0QzSpfC#  
还有说,使用 session_get_cookie_params 方法,设置 domain 为 .project.com +]C|y ,r  
+6<g N[  
这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功!  ~}K$z  
那么 \ERHnh  
Nb>C5TjR  
像这种的架构方式一般都是怎样实现的呢? dW|S\S'&  
7zXX& S  
更新 ~llw_ w  
ITU6E q  
现在采用的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功能的容器里) U]Iypl`l  
理论是:不论什么语言写的,或者framework写的session应该都可以共享 C q/936`O  
iIOA54!o  
如果你所有的app都是使用相同的语言和framework,这样你session共享的代价是最小的 E]^wsS>=  
3DNw=Ic0k  
如果你已经分成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设置就可以了