0

私はYiiにとても慣れていません。私は実際の例を開発しています。私はテーブルを持っているので、データベースからデータを取得するuserというモデルがあります。データベースの3つの主要なフィールドは、username、password、およびuserRoleです。ユーザー名とパスワードは問題なく機能します。データベース内のuserRoleを確認し、それに基づいてユーザーにロールを割り当てる必要があります。たとえば、ユーザーのuserRoleフィールド== 1の場合、ユーザーはadminであり、作成、読み取り、更新、および削除(CRUD)を実行できます。ただし、ユーザーのuserRole == 2の場合、ユーザーは更新と作成はできますが、削除はできません。UserController.phpの'expression'ib accessRules()でそれを実行しようとしましたが、機能しませんでした。それから私はそれについて読んで、私が役割でそれをするべきであるとわかりました。それは私が書いたものです:

public function accessRules()
    {
        $auth = Yii::app()->authManager;

        $auth->createOperation('createUser','create a user');
        $auth->createOperation('updateUser','update a user');
        $auth->createOperation('deleteUser','delete a user');

        $role=$auth->createRole('creator');
        $role->addChild('createUser');

        $role=$auth->createRole('updater');
        $role->addChild('updateUser');

        $role=$auth->createRole('deleter');
        $role->addChild('deleteUser');


        return array(
................................
        array('allow',
            'actions'=>array('create','update'),
            'users'=>array('@'),
            'roles'=>????,

.....................

??? 何をすべきかわからないところです。createOperation / addChildを正しい場所/ファイルで定義していますか?返される配列で「ロール」を使用するにはどうすればよいですか?また、データベースからuserRoleをどこで取得する必要がありますか?

Yiiフォーラムがアクティブではないので、私は必死に答えを探しています

ありがとうございました

4

2 に答える 2

0

操作と役割の作成は、1回限りのアクティビティです(作成または編集するときはいつでも)。一度呼び出す別のメソッドが必要です。

また、役割ベースのアクセスシステムを導入する場合は、データベースにテーブルを追加する必要があります。スキーマはフォルダー(yii / framework / web / auth / schema.sql)にあります。

しかし、RBACを実装する最も簡単な方法は、Rightsのような拡張機能を使用することです-http ://www.yiiframework.com/extension/rights/

于 2012-02-10T01:50:37.877 に答える
0

ログに記録されたユーザーに(または既知のユーザーIDで)役割を割り当てる必要があります

$auth->assign('creator',user()->id);
$auth->assign('updater', 102); //102 as user id
//...

そしてaccessRulesであなたは書く必要があります

'actions'=>array('create','update'),
'roles'=>array('creator','updater'),

この答えはあなたが探しているものですか?

于 2012-02-10T23:31:20.830 に答える