2

こんにちは、どの方法を使用するのが最適かを理解したいのですが、簡単な例がある場合は、どのロールを魔女に与えるかを指定できません。

public function accessRules()
{
    return array(
        array('allow',  // allow authenticated  to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('@'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}
4

2 に答える 2

3

ユーザーの役割に基づいて指定できます。たとえば、編集者の場合は編集ユーザー機能のみを表示し、公開者の場合はユーザーをブロックおよびブロック解除するためのアクセスのみを提供できます。例: プロジェクトで以下のコードを使用しました。

public function accessRules()
    {
        if(isset(Yii::app()->user->role) && Yii::app()->user->role == "superadmin"){
            $arr = array('create','update','admin','delete','block','help','download','forgot');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "admin") {
            $arr = array('help','download','forgot');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "editor") {
            $arr = array('update');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "publisher") {
            $arr = array('block');
        } else {
            $arr = array('');
        }
        return array(
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions'=>$arr,
                'users'=>array('@'),
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

同様に、登録ユーザーのみにページを表示し、登録ユーザーとゲスト ユーザーの両方にページの一部を表示する必要があります。accessRules() 関数でも同じことができます

すべてのユーザーを許可するには

array('allow', 
            'actions'=>array('create','update'),
            'users'=>array('*'),
        ),

登録ユーザーのみ許可するには

array('allow', 
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),

ユーザー名に基づいて制限を作成するには

array('allow',
            'actions'=>array('create','update'),
            'users'=>array('username1','username2'),
        ),
于 2014-09-29T11:46:55.807 に答える
0

この Yii 拡張機能を試してみてください。これが役立つかもしれません -

http://www.yiiframework.com/extension/rbam

または、アイデアを得る - Yii フレームワーク: ロールベースのアクセス制御

于 2014-09-29T14:15:52.083 に答える