我应该在Yii框架中将代码放在哪里?

时间:2012-04-10 15:39:59

标签: yii authorization

这是我在Yii框架手册中找到的代码:

$auth=Yii::app()->authManager;

$auth->createOperation('createPost','create a post');
$auth->createOperation('readPost','read a post');
$auth->createOperation('updatePost','update a post');
$auth->createOperation('deletePost','delete a post');

$bizRule='return Yii::app()->user->id==$params["post"]->authID;';
$task=$auth->createTask('updateOwnPost','update a post by author himself',$bizRule);
$task->addChild('updatePost');

$role=$auth->createRole('reader');
$role->addChild('readPost');

$role=$auth->createRole('author');
$role->addChild('reader');
$role->addChild('createPost');
$role->addChild('updateOwnPost');

等等。 问题是我应该在哪里放置用于创建角色,任务等的代码?

3 个答案:

答案 0 :(得分:1)

您应该在 protected / controllers / RbacController.php

中使用此代码

修改 protected / config / main.php

return array(
'components'=>array(
    'db'=>array(
        'class'=>'CDbConnection',
        'connectionString'=>'sqlite:path/to/file.db',
    ),
    'authManager'=>array(
        'class'=>'CDbAuthManager',
        'connectionID'=>'db',
    ),
),
);

这是官方文件:

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#using-default-roles

答案 1 :(得分:1)

这花了我一段时间才明白,所以让我回答你的问题,因为我理解yii是如何运作的。

您将首先按照framework / web / auth

中的sql代码创建相应的表

您可以使用phpmyadmin填充数据库

您还可以创建一个控制器,您可以在其中运行上述所有代码。这会运行一次,因为你只是填充数据库

控制器可以调用myInitController.php并与其他控制器一起存储。 控制器可以像

一样简单
<?php

class myInitController extends Controller
{
    public function actionRun()
    {    
        $auth=Yii::app()->authManager;
        $auth->createOperation('createPost','create a post');

        echo "this is it";
    }
}

然后你可以访问www.yourwebsite.com/myInit/Run来运行它 验证写入数据库的内容。不要将此控制器推向生产阶段。您不希望其他人运行该命令。

所以你的选择是

  1. 通过像phpmyadmin
  2. 之类的东西输入数据
  3. 创建一个客户控制器,可以存储所有php命令并执行
  4. 使用gii创建模型和CRUD函数(注意复合主键)
  5. 我希望这会有所帮助。

答案 2 :(得分:0)

这段代码将在数据库中创建项目。你必须执行它。

您可以在其中一个控制器中创建一个操作,然后再运行它。

  

本地主机/ myAppName / myController的/ myAction

或者你也可以创建一个php文件。然后juste粘贴你的代码片段并运行它。