نمایش نتایج 1 تا 7 از 7

نام تاپیک: چند تا سوال در مورد تابع accessRules داشتم

  1. #1
    کاربر دائمی آواتار mostafa_shoakry
    تاریخ عضویت
    آذر 1388
    محل زندگی
    فعلا که ساکن اردبیلم
    سن
    36
    پست
    292

    چند تا سوال در مورد تابع accessRules داشتم

    1. اگه من بخوام که هیچ کاربری به غیر از اونی که لاگین کرده ( مثلا یک کاربری که می تونه تو پنل مدیریت سایت تغییرات انجام بده ) به صفحات و توابع موجود در پنل مدیریت دسترسی پیدا نکنه کدومو تغییر بدم؟
    تابع من به این شکل هست :

    public function accessRules() {

    return array(
    array('allow', //
    'actions' => array(), ///<--------
    'users' => array('*'),
    ),
    array('allow', // allow authenticated user
    'actions' => array('index', 'insert', 'update', 'view'),
    'users' => array('@'),
    ),
    array('allow', // allow admin user
    'actions' => array('admin', 'delete'),
    'users' => array('admin'),
    ),
    array('deny', // deny all users
    'users' => array('*'),
    ),
    );

    }

    یعنی هر بار میام تو قسمتی که نشون دادم توابع رو می نویسم مثل :view,insert , update و ...

    2. سوال دومم اینکه این از کجا میدونه کاربری که لاگین کرده admin هست و سطح دسترسی رو اعمال می کنه.( همونجایی که بعضی از اکشن هارو برای admin نوشتیم )
    منظورم اینه که آیا حتما باید نام کاربریمون تو دیتابیس باید admin باشه تا تابع بفهمه کاربر Admin هست؟

    3. چطوری می تونیم سطح دسترسی داینامیک بدیم با استفاده از RBAC ؟
    تو یکی از پروژه هام باید چندتا کاربر تعریف کنیم به صورت داینامیک که کاربر تعریف شده فقط مثلا به اکشن view دسترسی داشته و نه به delete و یا update

  2. #2

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    1- منظورتون رو دقیق تر بگین. مدیریت رو بصورت ماژول درست کردین؟
    2- از روی فیلد name در CWebUser که در UserIdentity مشخص میشه، تشخیص میده.
    3- درمورد استفاده از RBAC توی پکیج توضیح دادم ولی توی افزونه های Yii موارد بهتری هم هست. البته میتونید بطور دستی هم انجام بدین که اول باید جواب مورد 1 رو بدین تا برحسب نیازتون و نوع استفاده شما توی پروژه، راهنمایی کنم.

  3. #3
    کاربر دائمی آواتار mostafa_shoakry
    تاریخ عضویت
    آذر 1388
    محل زندگی
    فعلا که ساکن اردبیلم
    سن
    36
    پست
    292

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    1- منظورتون رو دقیق تر بگین. مدیریت رو بصورت ماژول درست کردین؟
    بله دقیقا یک ماژول ادمین اضافه کردم

  4. #4

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    خوب در این صورت، کارتون خیلی راحت تره. میتونید دسترسی به تمام اکشنها رو برای کاربران لاگین کرده باز بگذارین:
    public function accessRules()
    {
    return array(
    array(
    'allow',
    'users'=>array('@'),
    ),
    array(
    'deny',
    'users'=>array('*'),
    ),
    );
    }

    و بعد، توی فایل AdminModule.php که برای شما توی پوشه ماژول ساخته شده، این کد رو بنویسید:
    <?php

    class AdminModule extends CWebModule
    {
    public function init()
    {
    // this method is called when the module is being created
    // you may place code here to customize the module or the application

    // import the module-level models and components
    $this->setImport(array(
    'mngr.models.*',
    'mngr.components.*',
    ));
    }

    public function beforeControllerAction($controller, $action)
    {
    if(parent::beforeControllerAction($controller, $action))
    {
    // this method is called before any module controller action is performed
    // you may place customized code here
    if(Yii::app()->user->isGuest || !in_array(Yii::app()->user->id, array(1, 3, 5)) {
    throw new CHttpException(403, 'دسترسی غیر مجاز');
    }
    return true;
    }
    else
    return false;
    }
    }

    الان توی کد فوق، اگه id کاربر 1 یا 3 یا 5 نباشه، خطای 403 براش صادر میشه و میگه دسترسی غیرمجاز
    اگه یکم روی این سیستم فکر کنید، به راحتی میتونید ساختار دستی خودتون رو برای RBAC بخش مدیریت ازطریق دیتابیس، ایجاد کنید و فرضاً رکورد متناظر با id کاربر جاری رو از جدول access در دیتابیس پیدا کنید. اگه اصلاً رکوردی نبود که یعنی کاربر مدیر نیست و اگه بود، فرضاً فیلد accessController و accessAction رو چک کنید و به ترتیب با this->id$ و this->action->id$ مقایسه کنید و اگه برابر بود یا رکورد مربوطه پیدا شد، اجازه بدین کار کنه وگرنه خطای 403 تولید کنید.

  5. #5

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    بنده هم یک سوال در این زمینه برام پیش اومده ، که گفتم تاپیک جدید نزنم و همینجا بپرسم
    اگر فرض کنیم یک پروژه ساده داشته باشیم که با accessRule ها کارمون راه بیفته . (یوزر ها هم تو db هستند)
    حالا بخواهیم 2 تا و یا تعداد بیشتری user نقش admin رو داشته باشند ، باید چکار کنیم ؟؟
    آخرین ویرایش به وسیله armanb2013 : شنبه 06 اردیبهشت 1393 در 23:09 عصر

  6. #6

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    دقیقاً پست قبل از خودتون رو بخونید. فکر میکنم جوابی که میخواین رو گذاشتم.

  7. #7

    نقل قول: چند تا سوال در مورد تابع accessRules داشتم

    آره درسته من به قضیه یه جور دیگه نگاه کرده بودم !

تاپیک های مشابه

  1. سوال: چند سوال در مورد کامنت گذاري داشتم
    نوشته شده توسط gorg313 در بخش برنامه نویسی مرتبط با شبکه و وب در VB6
    پاسخ: 4
    آخرین پست: شنبه 16 شهریور 1392, 00:15 صبح
  2. سوال: چند سوال در مورد تابع mysql_real_escape_string
    نوشته شده توسط phpweb در بخش PHP
    پاسخ: 0
    آخرین پست: چهارشنبه 10 فروردین 1390, 20:09 عصر
  3. چند تا سوال در مورد ASP.NET دارم.لطفا کمکم کنید.
    نوشته شده توسط vb4u در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: جمعه 22 خرداد 1383, 20:08 عصر
  4. چند تا سوال در مورد کد گذاری نا متقارن
    نوشته شده توسط oxygenws در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 3
    آخرین پست: سه شنبه 07 بهمن 1382, 02:19 صبح
  5. چند تا سوال در مورد D8
    نوشته شده توسط Mehdi_FT در بخش برنامه نویسی در Delphi Prism
    پاسخ: 0
    آخرین پست: سه شنبه 23 دی 1382, 05:28 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •