使用Yii框架开发的多子域名共享登录信息

基本设置方案见:http://www.linuxidc.com/Linux/2014-11/109283.htm

用Yii开发时,通过上述方式并不能在多个子域名间达到预期,因为通过Yii::app()->user设置的session,Yii框架会自动在key的前面添加"_keyPrefix"

CWebUser.php

	public function getState($key,$defaultValue=null)
	{
		$key=$this->getStateKeyPrefix().$key;
		return isset($_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
	}

	public function getStateKeyPrefix()
	{
		if($this->_keyPrefix!==null){
			return $this->_keyPrefix;
		}else{
			return $this->_keyPrefix=md5(‘Yii.‘.get_class($this).‘.‘.Yii::app()->getId());
		}
	}

CApplication.php

	public function getId()
	{
		if($this->_id!==null)
			return $this->_id;
		else
			return $this->_id=sprintf(‘%x‘,crc32($this->getBasePath().$this->name));
	}

因为默认情况各子域名的路径和项目名不同,导致在A域名下登录,而在B子域名下无法识别己登录。

解决方案:

所有子域名项目中的main.php文件中设置相同的

return array(
    ‘id‘=>‘peter.com‘,
    .......
    );

return array(
        ..........
	‘components‘=>array(
		‘user‘=>array(
			// enable cookie-based authentication
			‘allowAutoLogin‘=>true,
	        ‘stateKeyPrefix‘=>‘peter.com‘
		),
		.....
        )
 );
时间: 2024-10-10 04:23:06

使用Yii框架开发的多子域名共享登录信息的相关文章

一级域名的登录信息在二级域名中获取

在一级域名下的网站登录后,跳转到二级域名下的功能网页,怎么能够做到共享登录信息呢 现在做的站点中一般是前后端分离,在登录接口中拿到登录的 token  ,保存到本地,后面发起 ajax 请求的请求头中统一添加header 到服务端来验证是否登录. 那从站点跳转到二级域名的时候 怎么拿到 token 呢 1.如果是单页面应用的话,会将token 保存到store 或者 storage 中,但是在storage中的数据无法在跨域的情况下获取到. 2.这里将获取到的token 保存在 cookie 中

Django框架开发-基于Ajax实现的登录

---恢复内容开始--- 一.需要知道的新知识点 1.刷新验证码,给src属性加一个?号.加个?会重新去请求 # 给验证码刷新 $(".vialdCode_img").click(function () { 方式一:dom方法 $(this)[0].src+="?"#} 方式二:jQuery的attr方法 $(this).attr("src",$(this).attr("src")+'?') }) }) 2.当登录成功跳转,或

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建 选择Linux桌面环境Deepin2014.1下开发网站的理由很简单,能截图,有搜狗输入法,可以WPS文档记录,终端下复制粘贴很容易,相比ubuntu,fedora死机次数少了,对,就是不用折腾,自带的. 先说vim和DBGp插件. Deepin2014.1简体中文,自带的vim7.4版本,很多配置已经很适合大陆的人使用了,比如Php和Python的调试支持等,不需要重新编译了.可以节省不少步骤.这里提供一个vim的配

yii框架数据库操作数据访问对象(DAO)简单总结

Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码.Yii 的Active Record( AR ),实现了被广泛采用的对象关系映射(ORM)办法,进一步简化数据库编程.按照约定,一个类代表一个表,一个实例代表一行数据.Yii AR消除了大部分用于处理CRUD(创建,

使用Yii框架中遇到的三个问题

以下由我们在信易网络公司开发项目的时候终结出的一些经验 1.main.php文件中欲引入全局变量的问题 还原一下此问题:在Yii框架中,main.php一般会作为整个应用的配置文件,保存Application的各种参数,直接return数组.在使用的过程中,因为main.php文件一定会被Yii提前加载,所以将一些全局性的操作也放在了此文件,加载一些类操作啥的没有什么问题,当有一次加了一个全局变量,并且在其它地方使用global获取全局变量时,发现无论我如何努力都得到的是NULL.各种尝试后,终

YII框架分析笔记2:组件和事件行为管理

Yii是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.CComponent几乎是所有类的基类,它控制着组件与事件的管理,其方法与属性如下,私有变量$_e数据存放事件(evnet,有些地方叫 hook),$_m数组存放行为(behavior). 组件管理 YII是一个纯oop框架,很多类中的成员变量的受保护或者私有的,CComponent中利用php中的魔术方法__get(),__set()来访问和设置属性,但这些方法的作用远不指这些.下面用__get()来说明 [php] vi

YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)

                        YII 框架源码分析             百度联盟事业部--黄银锋   目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 2.2.YiiBase 静态类 5 2.3.组件 6 2.4.模块 9 2.5 .App 应用   10 2.6 .WebApp 应用   11 3.系统组件 13 3.1.日志路由组件  13 3.2.Url 管理组件  15 3.3.异常

(转).Net基础体系和跨框架开发普及

在园子里看到了一篇关于.net体系及框架开发的文章,感触颇深,身为一个.net程序员,发现自己在这方面的跟进和理解远远不够.转到自己这里,分享的同时方便日后查看. 原文链接: http://www.cnblogs.com/sunhoy/p/6371178.html 基础概念 .Net 本身是一个通用开发平台,我个人的理解主要分位如下两个层面:1. 语言层面,2. 运行时 首先:在语言层面上 面向 .net 平台的顶层开发语言有很多,常见的如:C#,F#和Visual Basic等,.net框架提

yii框架的理解

Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP框架之一. yii框架里有很多组件,他的功能非常强大,代码的编写也变得简单.我是刚刚学习yii框架,听老师说这个框架很简单,可我并不那么认为,他里面有很多东西,根本搞不清楚作用.你必须英语够好,不然就无法看明白他写的是什么.都说多看看手册,代码,用多了自然就会了,可我觉得,就算我反复使用,我还是不知道yii框架里每个方法.