最近在用Yii框架开发几个网站,国内的资料实在是太少了,关于中文方面的。还好我的英文水平不错,总能搜索到国内相关的资料。国内用Yii的程序员也不少。这里就直接分享一些我遇到的问题。为了不妨碍我自己的工作,我直接简要的贴代码和摘取的网址了。有问题的可以直接到我的个人网站留言或和我联系:www.denispan.com
今天分享的一个Yii做系统的时候,要求全站登录才访问的功能。网站也有不少的解决方案,简单的说一下大致这几个方向:
- 通过控制器controller的access动作来控制每一个控制器的访问权限,这个是初级的
- 通过每个控制器的beforeAction或者beforeController函数来控制访问控制器前必须登录
- 最后一个就是我要介绍的,最懒最快捷的方式,使用behavior方式。
好了。介绍完了。我直接贴代码:
先新建这个文件
components/ApplicationBehavior.php
<?php
class ApplicationBehavior extends CBehavior
{ private $_owner;
public function events()
{
return array(
'onBeginRequest'=>'denyEverything',
);
}
public function denyEverything()
{
$owner=$this->getOwner();
if($owner->user->getIsGuest())
$owner->catchAllRequest=array("site/login");
}
}
?>
然后修改系统配置
main.php
'behaviors'=>array(
'class'=>'application.components.ApplicationBehavior',
),