这是我在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');
等等。 问题是我应该在哪里放置用于创建角色,任务等的代码?
答案 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来运行它 验证写入数据库的内容。不要将此控制器推向生产阶段。您不希望其他人运行该命令。
所以你的选择是
我希望这会有所帮助。
答案 2 :(得分:0)
这段代码将在数据库中创建项目。你必须执行它。
您可以在其中一个控制器中创建一个操作,然后再运行它。
本地主机/ myAppName / myController的/ myAction
或者你也可以创建一个php文件。然后juste粘贴你的代码片段并运行它。