`
lonestone
  • 浏览: 93285 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Yii框架整合Ucenter更新与增强

阅读更多

在我前面的博文中提出了整合ucenter到yii应用的方法,还有一些不完美,那就是,登录、退出需要手动输出js到页面上来通知其他应用。那么如何做到自动处理,而不需要特别照顾?我发现只需要继承CWebUser类,实现自己的WebUser类,并覆盖登录和退出两个事件即可,不多说,上代码:

 

<?php
class WebUser extends CWebUser
{
    public function afterLogin($fromCookie) 
    {
		parent::afterLogin ( $fromCookie );
		
		//ucenter
		Yii::import ( 'application.vendors.*' );
		include_once 'ucenter.php';
		
		$script = uc_user_synlogin ( $this->getId () );
		$count = preg_match_all ( '/src="(.+?)"/i', $script, $matches );
		
		if ($count > 0) {
			foreach ( $matches [1] as $file ) {
				Yii::app ()->clientScript->registerScriptFile ( $file, CClientScript::POS_END );
			}
		}
		//局部刷新顶部登录状态
		Yii::app()->clientScript->registerScript('refresh-login-status', 'top.$("#top_nav").load("'.CHtml::normalizeUrl(array('/site/login_status')).'");');
	}
	
	public function afterLogout()
	{
		parent::afterLogout();
		//ucenter
		Yii::import ( 'application.vendors.*' );
		include_once 'ucenter.php';
		
		$script = uc_user_synlogout();
		$count = preg_match_all ( '/src="(.+?)"/i', $script, $matches );
		
		if ($count > 0) {
			foreach ( $matches [1] as $file ) {
				Yii::app ()->clientScript->registerScriptFile ( $file, CClientScript::POS_END );
			}
		}
		Yii::app()->clientScript->registerScript('refresh-login-status', 'top.$("#top_nav").load("'.CHtml::normalizeUrl(array('/site/login_status')).'");');
	}
}

 

可以看到,我用正则匹配出了各应用通知的js,然后用CClientScript注册到页面底部。另外,由于在我的应用中头部有个局部加载的登录状态,用jquery自动更新了。

 

将这个类放在components目录下,接下来修改config/main.php的user段设置即可:

 

'user'=>array(
			'class'=>'WebUser',
			// enable cookie-based authentication
			'allowAutoLogin'=>true,
			'loginUrl' => array('/site/login'),
		),

 

这样有个最大的好处,就是应用记住用户登录后,下次用户访问网站任何页面,都会自动登录,并同时登录到其他应用。但要注意:在用户登录成功、退出成功等action中,不要直接redirect,还是需要输出一个跳转页面,否则这些js不会输出到浏览器。

 

本人博客迁移到 http://yiidev.cn 本博客停止更新

分享到:
评论
2 楼 yuan1238 2012-06-14  
我觉得用JS做通知还是不行!还不如直接在login方法里面用curl或者socket通知
我正在找这方面的资料
1 楼 uiexp 2012-01-09  
不能直接redirect ,可以用render做一个自动跳转貌似很不错。

相关推荐

    YII2框架整合H+后台UI框架

    在IT行业中,开发高效、美观的后台管理系统是常见的需求,而`YII2`框架与`H+`后台UI框架的整合,就是一种优秀的解决方案。本文将深入探讨这两个框架的结合,以及如何进行相应的配置调整。 `YII2`是一个基于组件、高...

    《Yii框架深度剖析》配套代码

    《Yii框架深度剖析》配套代码 本书不是简单地介绍如何使用 Yii 框架,而是站在框架设计的高度,从源代码级别深 度剖析。本书首先介绍 PHP 框架技术的概念及其应用领域,然后开始仿照 Yii 框架源代码 自定义框架,...

    Yii框架学习手册

    Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂

    yii框架中文文档、yii中文手册教程

    这个版本是Yii框架的一个稳定版本,尽管现在已经有了更新的2.0版本,但仍然有许多项目基于1.1版本运行。文档通常会涵盖框架的基础知识,如MVC(模型-视图-控制器)架构、数据库操作、表单处理、安全特性、缓存策略、...

    yii框架yii框架yii框架yii框架yii框架

    很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架

    php最新框架YII框架

    Yii框架是PHP开发中的一个高性能、基于组件的MVC(Model-View-Controller)框架,以其高效、灵活和丰富的特性而备受开发者喜爱。它旨在提高开发效率,提供强大的功能,同时保持代码简洁和易于维护。Yii的名字来源于...

    Yii+Framework应用通过UCenter整合discuz视频教程

    4. **Yii 与 UCenter 整合**:学习如何在 Yii 应用中集成 UCenter 的 SDK 或 API,实现用户认证和数据同步。这通常涉及在 Yii 的控制器中编写逻辑,调用 UCenter 的接口,并处理响应结果。 5. **安全与优化**:在...

    yii框架中文手册教程

    Yii框架是一款由纯面向对象编程语言PHP开发的高性能开源Web应用开发框架,它遵循MVC(模型-视图-控制器)设计模式,并且特别强调可重用性和扩展性。Yii的设计理念旨在简化并加速复杂Web应用的开发进程,尤其适合大型...

    YII框架中文手册

    **Yii框架中文手册** Yii(读作"易")是一个高性能、基于组件的PHP框架,专为开发Web 2.0应用而设计。这个中文手册是开发者了解和掌握Yii框架的重要资源,它提供了详尽的指导,旨在帮助初学者和经验丰富的程序员更...

    Yii框架快速入门

    Yii框架是一款基于组件的高性能PHP框架,用于开发Web2.0应用。它的设计目标是高效、易用且可扩展。Yii这个名字来源于一个中文词汇“易”,意味着简单和便捷。本教程将带你逐步走进Yii的世界,了解其核心概念,以及...

    yii框架(1.1.15)

    总之,Yii 1.1.15是Yii 1.1.x系列的一个重要更新,它在保持框架易用性的同时,增强了安全性和性能,是开发者继续使用Yii框架进行项目开发的理想选择。如果你正在使用1.1.14或更早的版本,强烈推荐升级到1.1.15以获取...

    Yii框架学习笔记

    与其他PHP框架如CakePHP、CodeIgniter、Symfony、ThinkPHP和Zend Framework相比,Yii以其高性能、代码重用性和惰性加载机制脱颖而出,尤其适合开发大型、复杂且需求变化频繁的Web应用。 Yii框架的核心特性包括: 1....

    Yii框架PDF中文文档

    ### Yii框架知识点总结 #### 一、概述与新特性 **Yii** 是一款高性能的PHP Web应用程序开发框架,以其简洁高效著称。该框架旨在帮助开发者快速构建安全且高效的Web应用。本文档根据官方中文文档及《Yii权威指南》...

    Yii框架执行流程及部分源码分析

    让我们深入了解一下Yii框架的执行流程及其部分源码分析。 1. **程序结构及配置** Yii的项目结构通常包含以下关键部分: - `protected`:存放应用的核心代码,如模型、控制器、配置文件等。 - `runtime`:运行时...

    yii示例-下拉框-最新的yii框架

    在这个“yii示例-下拉框-最新的yii框架”中,我们将探讨如何在Yii2框架中实现下拉框功能。 1. **安装Yii框架** 在开始创建下拉框之前,你需要确保已经安装了最新版本的Yii框架。这通常通过Composer完成,运行`...

    yii 框架中文帮助文档

    YII框架的开发中文文档,帮助哪些正在学习YII框架的同学们,

    yii框架下的yii_blog 博客系统

    3. **安装与配置**:安装Yii框架通常通过Composer进行,然后配置web服务器(如Apache或Nginx)以指向项目的`web`目录。在`config/main.php`配置文件中,你可以设置数据库连接、路由规则、全局变量等。 4. **路由与...

    Yii 框架简介,主流PHP框架,值得学习。

    Yii 框架简介 全面轻松入手Yii 从这里开始 简单 明了 言简意赅

    yii框架商城

    在“yii框架商城”项目中,我们可以看到Yii被用来构建一个电子商务平台,这样的应用通常涉及到用户管理、商品展示、购物车、订单处理、支付接口集成等多个模块。 首先,Yii框架的核心特性之一是其对象关系映射(ORM...

Global site tag (gtag.js) - Google Analytics