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

نام تاپیک: اعتبارسنجی با پکیج zizaco/entrust

  1. #1
    کاربر دائمی آواتار rahahost
    تاریخ عضویت
    دی 1390
    محل زندگی
    تهران - خیابان ولیعصر
    پست
    167

    اعتبارسنجی با پکیج zizaco/entrust

    با سلام و احترام خدمت همه ی دوستان و اساتید محترم .

    یه موردی چند روزه که منو درگیر کرده اونم استفاده از پکیج زیر هست :
    https://github.com/Zizaco/entrust


    این پکیج رو نصب کردم و مشکلی در نصب وجود نداره اما یه مشکل جدی وجود داره اونم اینکه ، شرطی که برای اعتبارسنجی میزارم رو بصورت دو یا چند شرطی قبول نمیکنه ، مثلا :

    میخوام بگم :
    دسترسی یک متد از کنترلر برای نقش مدیر و کارمندی که مسئول بخش اخبار هست ، باز باشه و در غیر اینصورت به یک پیغام نمایش بده !

    کدی که برای بخش نوشتم :



    if(Entrust::can('tender_manager') == false OR Entrust::hasRole('admin') == false )
    {
    return 'test';
    }



    اگه من هرکدوم از این دو شرط رو بصورت تکی بنویسم ، درست جواب میده اما نمیدونم چرا برای حال OR با این مشکل مواجه میشم !
    بخاطر اینکه نمیشه تکی نوشته بشه ، نمیدونم باید چیکارش کنم !


    ممنون میشم راهنماییم کنید .

  2. #2

    نقل قول: اعتبارسنجی با پکیج zizaco/entrust

    نقل قول نوشته شده توسط rahahost مشاهده تاپیک
    با سلام و احترام خدمت همه ی دوستان و اساتید محترم .

    یه موردی چند روزه که منو درگیر کرده اونم استفاده از پکیج زیر هست :
    https://github.com/Zizaco/entrust


    این پکیج رو نصب کردم و مشکلی در نصب وجود نداره اما یه مشکل جدی وجود داره اونم اینکه ، شرطی که برای اعتبارسنجی میزارم رو بصورت دو یا چند شرطی قبول نمیکنه ، مثلا :

    میخوام بگم :
    دسترسی یک متد از کنترلر برای نقش مدیر و کارمندی که مسئول بخش اخبار هست ، باز باشه و در غیر اینصورت به یک پیغام نمایش بده !

    کدی که برای بخش نوشتم :



    if(Entrust::can('tender_manager') == false OR Entrust::hasRole('admin') == false )
    {
    return 'test';
    }



    اگه من هرکدوم از این دو شرط رو بصورت تکی بنویسم ، درست جواب میده اما نمیدونم چرا برای حال OR با این مشکل مواجه میشم !
    بخاطر اینکه نمیشه تکی نوشته بشه ، نمیدونم باید چیکارش کنم !


    ممنون میشم راهنماییم کنید .
    کد شما از نظر منطقی مشکل داره و اون هم به نظرم به خاطر پیچیده نوشته شدن اون هست. این سناریو رو در نظر بگیرید:

    کاربر مسئول بخش اخبار هست و مشخصه نقش مدیر رو هم نداره در نتیجه عبارت

    Entrust::can('tender_manager')


    (برام سوال هست شما دارید نقش رو بررسی می کنید چرا به جای hasRole از can استفاده کرده اید؟ can برای انجام یه کار هست مثلا manage-news یا create-article یا accept-comment و ... )

    برابر true خواهد شد و قسمت اول OR یا || نادرست خواهد شد در نتیجه عبارت بعد از OR یا || بررسی می شود. چون مسئول بخش اخبار مدیر نیست در نتیجه قسمت دوم برابر با true خواهد بود و وارد if می شویم!

    --------------------------

    این حالتی هست که کد شما قراره کار کنه و کاربر اخبار رو مدیریت کنه:

    اگر مدیر یا مسئول بخش اخبار بود:


    if(Entrust::can('tender_manager') || Entrust::hasRole('admin')) {
    // Manage the news!
    }


    برعکس این عبارت با توجه به قانون دمورگان میشه این:


    if(!Entrust::can('tender_manager') && !Entrust::hasRole('admin')) {
    // You cannot manage the news!
    }


    --------------------
    در ضمن اگه از لاراول ۵.۱.۱۱ به بالا استفاده می کنید می تونید از Gate لاراول برای اینکار استفاده کنید (بدون نیاز به نصب پکیج خاص!)
    http://laravel.com/docs/5.1/authorization

  3. #3
    کاربر دائمی آواتار rahahost
    تاریخ عضویت
    دی 1390
    محل زندگی
    تهران - خیابان ولیعصر
    پست
    167

    نقل قول: اعتبارسنجی با پکیج zizaco/entrust

    ممنون از توضیحات کاملتون :)

    این کدی که شما دادین رو تست کردم و الان درست جواب داده اما مشکل اینجاست که من اینو هم تست کرده بودم !

    یعنی شرط رو به چند روش نوشته بودم ولی درست در نمیومد و همیشه یه جایه کار خراب میشد ولی ظاهرا یه اشتباهه کوچیک داشتم که با راهنمایی شما حل شد :)


    (برام سوال هست شما دارید نقش رو بررسی می کنید چرا به جای hasRole از can استفاده کرده اید؟ can برای انجام یه کار هست مثلا manage-news یا create-article یا accept-comment و ... )
    من از hasRole استفاده کردم ، متوجه سوالتون نشدم :-؟
    من برای نقش Admin از hasRole استفاده کردم و برای دسترسی از can استفاده کردم ( طبق مستندات خودش ).


    تو لاراول 5.1 اعتبارسنجی اینجوری هم اضافه شده ؟
    خیلی هم عالی ولی من از 4.2 استفاده میکنم فعلا چون 5.1 خیلی تغییر کرده ، هنوز نتونستم کامل مستندات رو بخونم :)

    بازم ممنون از راهنماییه مفیدتون :)
    آخرین ویرایش به وسیله rahahost : یک شنبه 26 مهر 1394 در 13:49 عصر

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

  1. نحوه استفاده از پکیج در دلفی ؟؟؟؟
    نوشته شده توسط barbazoo در بخش برنامه نویسی در Delphi
    پاسخ: 13
    آخرین پست: دوشنبه 04 اردیبهشت 1385, 00:20 صبح
  2. پاسخ: 0
    آخرین پست: چهارشنبه 08 تیر 1384, 14:11 عصر
  3. پکیج
    نوشته شده توسط IMC در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: چهارشنبه 18 خرداد 1384, 11:44 صبح
  4. پکیج با SqlServer
    نوشته شده توسط A.Noor در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 10
    آخرین پست: چهارشنبه 17 دی 1382, 19:29 عصر

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

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