最近在用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',
),