تالار گفتمان nCIS.ir

نسخه‌ی کامل: چک کردن لاگین بودن در بخش مدیریت
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.
من قبلا از Yii 1 استفاده میکردم و توی ماژول admin یک متدی گذاشته بودم به این صورت:
public function beforeControllerAction($controller, $action)
{
    if(parent::beforeControllerAction($controller, $action)) {
        if (Yii::app()->user->isGuest || Yii::app()->user->getState('user_type') !=1) {
            Yii::app()->getModule('admin')->user->loginRequired();
        } else {
            return true;
        }
    } else {
        return false;
    }
}

و همینطور در متد Init اش اینو آورده بودم:
 $this->setComponents(array(
    'errorHandler' => array(
        'errorAction' => '//site/error'),
        'user' => array(
        'class' => 'CWebUser',             
        'loginUrl' => Yii::app()->createUrl('//site/login'),
    )
));

که چک میکرد اگر کاربر لاگین نیست یا لاگین کرده و user_type اش برابر 1 نیست میفرستادش به صفحه لاگین.

الان توی Yii2 نمیدونم اینو چه جوری میتونم هندل کنم. مشابه این کد رو هم نوشتم اما جواب نگرفتم. یه مقداری با مفاهیم AccessControl و این چیزا مشکل دارم برای همین ازشون استفاده نکردم. ممنون میشم اگر توضیحی بدین که چیکار باید کنم.
'access' => [
    'class' => AccessControl::className(),
    'user'=>Yii::$app->admin,
    'rules' => [
        [
            'allow' => true,
            'roles' => ['@'],
        ],
        [
            'actions' => ['captcha','login'],
            'allow' => true,
            'roles' => ['?'],
        ],
    ],
],



web.php

'admin'=>[
    'class'=>'yiiwebUser',
    'identityClass'=>'appmodulesadminmodelsAdmin',
    'enableAutoLogin' => false , 
    'loginUrl'=>['/admin/default/login'],
    'idParam'=> 'admin',
],

باید از access controller استفاده کنی و تو تنظیمات web بهش ریداریک اینارو بدی تا از حالت پیش فرض دربیاد و تو Access controller بهش معرفی کنی البته من یدونه جدید تعریف کردم و شما می تونید تو همون قسمت user پارامتر هاش رو عوض کنی