2

这是我在 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');

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

4

3 回答 3

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

于 2012-04-10T19:51:43.070 回答
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. 创建一个可以存储所有 php 命令并执行的客户控制器
  3. 使用 gii 创建模型和 CRUD 函数(注意复合主键)

我希望这有帮助。

于 2013-09-23T22:39:22.227 回答
0

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

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

本地主机/myAppName/myController/myAction

或者您也可以创建一个 php 文件。然后将您的代码粘贴到里面并运行它。

于 2012-11-28T13:51:22.053 回答