1.Yii debug扩展yii-debug-toolbaryiidebugtb

2.Yii 配置文件main.php app->name为中文的原因是代码文件编码成了GBK,修改成utf-8(无BOM)即可

3.main.php 配置 'defaultController' => 'HomeController'. 把默认的SiteController修改成这个之后,errer,login和logout这3个actions需要在配置文件main.php修改errorhandle 并且yii framework里面也有几项要改,查找site/login 改成 home/login即可

4.main.php 配置语言 'language' => 'zh_cn'

5.main.php 表前缀

'db'=>array( ... 'tablePrefix' => 'ocsales', ),

6.srbac的汉化:把srbac/messages/zh文件夹在当前文件复制改成zh_cn,再做上述4的步骤

7.Yii srbac扩展的使用 原文在这里,但我按照原文的配置不成功.以下是摘录我配置成功的.(部分配置从别处来,Yii版本1.1.14)

创建了一张只有userid,username和password的user表。同时往里面插入了3条初始数据,分别为:超级管理员账号:system/system系统管理员账号:admin/admin,普通用户demo/demo

CREATE TABLE user ( userid int(11) NOT NULL AUTOINCREMENT, username varchar(50) NOT NULL, password varchar(50) NOT NULL, PRIMARY KEY (userid) ) ENGINE=MyISAM AUTOINCREMENT=4 DEFAULT CHARSET=utf8;


-- Records of user


INSERT INTO user VALUES ('1', 'system', '54b53072540eeeb8f8e9343e71f28176'); INSERT INTO user VALUES ('2', 'admin', '21232f297a57a5a743894a0e4a801fc3'); INSERT INTO user VALUES ('3', 'demo', 'fe01ce2a7fbac8fafaed7c982a04e229');

编辑/protected/config/main.php,连接数据库,gii生成model和curd

修改components/UserIdentity.php中authenticate()方法,让应用使用数据库实现登陆

protected $userid; public function authenticate(){ $user = User::model()->find('username=?', array($this->username)); if($user === null){ $this->errorCode=self::ERRORUSERNAMEINVALID; }elseif($user->password !== md5($this->password)){ //我在这里加了层salt $this->errorCode=self::ERRORPASSWORDINVALID; }else{ $this->errorCode=self::ERRORNONE; $this->userid = $user->userid; } return !$this->errorCode; } function getId(){ return $this->userid; }

修改main.php,import增加以下内容 'import'=>array( ... 'application.modules.srbac.controllers.SBaseController', ),

components增加

'authManager' => array( // Path to SDbAuthManager in srbac module if you want to use case insensitive //access checking (or CDbAuthManager for case sensitive access checking) 'class' => 'application.modules.srbac.components.SDbAuthManager', // The database component used 'connectionID' => 'db', // The itemTable name (default:authitem) 授权项表 'itemTable' => 'items', // The assignmentTable name (default:authassignment) 权限分配表 'assignmentTable' => 'assignments', // The itemChildTable name (default:authitemchild) 任务对应权限表 'itemChildTable' => 'itemchildren', ),

modules中增加 'srbac'=> array( 'userclass'=>'User', //用户model名字段 'userid'=>'userid', //用户表userid的标识字段 'username'=>'username', //用户表username的标识字段 'delimeter'=>'/', //控制器名和方法的分割线(在Srbac模块中的体现) 'debug'=>false, //debug模式为真,Srbac模块失效,debug模式为假,Srbac模块工作 'pageSize'=>10, //Srbac模块中的分页设置 'superUser' =>'超级管理员', // Srbac中最高权限管理者名称 'css'=>'srbac.css', //Srbac加载的CSS样式 'layout'=>'application.views.layouts.main', //Srbac模块展现的主题模版 'notAuthorizedView'=>'srbac.views.authitem.unauthorized', //非自动验证视图 'alwaysAllowed'=>array( //默认不分权限管理的action动作 'SiteLogin','SiteLogout','SiteIndex','SiteAdmin', 'SiteError', 'SiteContact', ), 'userActions'=>array('Show','View','List'), //User 默认的动作 'listBoxNumberOfLines' => 15, //Srbac模块中的listbox分页 'imagesPath' => 'srbac.images', //Srbac模块加载图文件夹 'imagesPack'=>'tango', //Srbac模块主题的风格noia,tango两种 'iconText'=>true, //图片上显示文本,为真有文本,为假只有图标 'header'=>'srbac.views.authitem.header', //Srbac模块视图的view头部 'footer'=>'srbac.views.authitem.footer', //Srbac模块视图的view页尾 'showHeader'=>true, //显示视图头部 'showFooter'=>true, //显示视图尾部 'alwaysAllowedPath'=>'srbac.components', //默认加载Srbac的核心文件地址 ),

这个配置文件定义了srbac的基本配置项 运行以下即可 http://www.example.com/index.php?r=srbac

实现权限控制用到了3张表,如果这三张表不存在,系统首次运行时会提示建立这三张表后才能正常使用。 安装数据表时会询问是否建立示例数据

以下步骤是为了做验证srbac权限控制是否成功的 下一步建立一个简单的控制器 ,在controller文件夹下新建adminController

class adminController extends SBaseController{ public function actionIndex(){ $this->render('index'); } public function actionUser(){ $this->render('user'); } public function actionSetting(){ $this->render('setting'); } }

同样在view下建立admin文件夹并创建3个视图文件。 最终的设想是,一般用户只可以看到index页面,管理员可以看index和user,超级管理员以上可以看见所有页面。 demo->task(task)->AdminIndex(operation) admin->admin(task)->AdminIndex,AdminUser(operation) system->system(task)->AdminIndex,AdminUser,AdminSetting(operation) 自己逐个试验即可