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

これを理解するのに少し時間がかかったので、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 に答える
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 に答える
0

このコードは、データベースに項目を作成します。あなたはそれを実行しなければなりません。

コントローラーの 1 つでアクションを作成し、それを実行できます。

localhost/myAppName/myController/myAction

または、php ファイルを作成することもできます。次に、コードを貼り付けて実行します。

于 2012-11-28T13:51:22.053 に答える