热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

如何实现多个域名共享session

场景项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问:例如:项目代码都在website这个目录下,且是单一入口文件架构方式。现在的服务器配置是(nginx)的配置方式是ServerN...

场景

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问:

例如:

项目代码都在 website 这个目录下,且是单一入口文件架构方式。

现在的服务器配置是 (nginx)的配置方式是

ServerName www.project.com, a.project.com, b.project.com

Root 都指向 website 目录

现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。

问题来了

怎样实现session的共享呢?

搜了下,网上的其中的一个解决方案是将session_id 放到COOKIE 里面, 然后在session_start 之前取出COOKIE中的session_id,手动设置session_id。

还有说,使用 session_get_COOKIE_params 方法,设置 domain 为 .project.com

这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功!

那么

像这种的架构方式一般都是怎样实现的呢?

更新

现在采用的session存储方式是使用数据库,

回复内容:

场景

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问:

例如:

项目代码都在 website 这个目录下,且是单一入口文件架构方式。

现在的服务器配置是 (nginx)的配置方式是

ServerName www.project.com, a.project.com, b.project.com

Root 都指向 website 目录

现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。

问题来了

怎样实现session的共享呢?

搜了下,网上的其中的一个解决方案是将session_id 放到COOKIE 里面, 然后在session_start 之前取出COOKIE中的session_id,手动设置session_id。

还有说,使用 session_get_COOKIE_params 方法,设置 domain 为 .project.com

这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功!

那么

像这种的架构方式一般都是怎样实现的呢?

更新

现在采用的session存储方式是使用数据库,

把session理解成db,把你希望共享的数据存在db里面(或者具有db功能的容器里)
理论是:不论什么语言写的,或者framework写的session应该都可以共享

如果你所有的app都是使用相同的语言和framework,这样你session共享的代价是最小的

如果你已经分成n个app了,为什么还要共享session,共享session的结果就是耦合,那你分app的目的何在?分成N个app,然后把sso搞定就可以了

COOKIE domain设置为*.project.com

COOKIE,db,memcache,redis以及任何能够存储的地方

url queryString

如@Kslr 所说,放到一个独立的容器里去。

持久化session

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

你可以再写一个app,用来存储不同app的共享数据,然后通过api来相互调用,将用户的特征传入api,应该很容易实现针对统一回话的键值对管理吧?就是让这个app实现api:(session_id,key)返回value。

感觉最好还是持久化共享,或者你还可以像CI那样,把session用双向加密算写到COOKIE里面,不过,如果密钥泄露了就麻烦了!哈哈哈....

你好,我的项目中也从在同样的场景,目前我也在考虑解决方案,问题的核心不是存储,而是如何进行跨域共享的问题。我在考虑使用JSONP,之后会进行技术验证,希望能共同讨论。

相同顶级域名的话是可以通过设置实现的,如果顶级域名也不相同的话,很遗憾无法实现。但你可以通过auth实现,做一个接口接收传递过来的参数进行验证,通过后为用户生成session就像用户通过正常的登陆实现一样

http://fuweiyi.com/others/2013/03/08/a-domain-pan-resolve-rewrite-cross-session.html
是根据这个实现吗?

JSESSIONID FC33C9C32AB81A8FDD5D815A77FD442E demo.dadaping.com
JSESSIONID FC33C9C32AB81A8FDD5D815A77FD442E test.dadaping.com
JSESSIONID FC33C9C32AB81A8FDD5D815A77FD442E maps.dadaping.com

要实现上面的方式,但是在服务器端,如果遇到域名不同,jsession的值就重新生成了。

推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
author-avatar
娱乐老爷_410
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有