Yii2下session跨域名共存的解决方案


Posted in PHP onFebruary 04, 2017

前面谈过session相关配置,在开发的时候,常需要跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b.com之间,这几天总结了一下处理方法。

无论是一二级域名,和不同域名下的跨域,无非要达到两点:

  • 客户端访问同一个sessionId,
  • 所有域名对应的服务器访问的session的数据的位置必须一致。

1.访问共同的sessionId主要是通过把当前的sessionId写进cookie里面

cookie在不同域名下是不能访问的,我们需要在访问在后台设置用户在登录的时候,把需要共用的登录信息的域名,如果是在1,2级域名下,直接把cookie设置为所属主域名,例如:

setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".a.com");

也许你会问:如果是在不同的域名呢?采用P3P技术简单解决,实现原理,在访问网站x.com的时候,y.com程序触发y.com文件的写入sessionid值,sessionid值便可以获取,然后把seesion值存入数据库,取相同的sessionid值便可。这就要求y.com里面的程序文件必需能跨域访问,默认情况下,浏览器是不能跨域设置cookie的,加上p3p头后才行。在对应php文件加上:header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

2.session数据存储位置一致的实现方法

session该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在,而非存储在服务器的内存中,在这里我们得修改为所有域下都能访问的方式。网上介绍了数据库存储,文件形式存储,内存存储, 如果用数据库存储session数据,网站的访问量很大的话,SESSION 的读写会频繁地对数据库进行操作,效率就会明显降低,可以考虑存在内存服务器来实现,下面的session.rar里面介绍的是数据库存session的实例。

在yii2下 处理这中问题,根据网上搜到的教程 终配置成功教程如下:

在frontend的config文件夹中main.php中配置

$host = explode('.', $_SERVER["HTTP_HOST"]);
if (count($host) > 2) {
  define('DOMAIN', $host[1] . '.' . $host[2]);
} else {
  define('DOMAIN', $host[0] . '.' . $host[1]);
}
define('DOMAIN_HOME', 'www.' . DOMAIN);
define('DOMAIN_USER_CENTER', 'man.' . DOMAIN);
define('DOMAIN_API', 'api.' . DOMAIN);
define('DOMAIN_EMAIL', 'mail.' . DOMAIN);
define('DOMAIN_LOGIN', 'login.' . DOMAIN);
define('DOMAIN_IMG', 'img.' . DOMAIN);

然后配置User 和 Session:

'user' => [
  'enableAutoLogin' => true,
  'identityCookie' => ['name' => '_identity', 'httpOnly' => true, 'domain' => '.' . DOMAIN],
],
'session' => [
  'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],
  'timeout' => 3600,
],

这里在配置项的user和session里 我把domain写死了例如:'domain'=>'.baidu.com',这样就不用判断了.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 #PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 #PHP
php基于dom实现的图书xml格式数据示例
Feb 03 #PHP
PHP遍历目录文件的常用方法小结
Feb 03 #PHP
详解yii2实现分库分表的方案与思路
Feb 03 #PHP
php获取客户端IP及URL的方法示例
Feb 03 #PHP
php观察者模式应用场景实例详解
Feb 03 #PHP
You might like
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
vue axios同步请求解决方案
2017/09/29 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
js实现随机8位验证码
2020/07/24 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
Django的信号机制详解
2017/05/05 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
详解Python绘图Turtle库
2019/10/12 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
python中的时区问题
2021/01/14 Python
2015年教师节感恩寄语
2015/03/23 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题