احراز هویت پنل مدیریت

زمان قرارگیری : 15 خرداد 1396
زمان این قسمت : 19:34
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 1180 نفر
قیمت دوره 125000 تومان
وضعیت دوره تکمیل شده
زمان کل دوره 30:19:42
تعداد قسمت‌ها 51
نوع دسترسی نقدی

خوب در این جلسه با استفاده از Authentication و Middleware بخش احراز هویت پنل مدیریت مدیران رو پیاده سازی میکنیم این کار باعث این میشه که کاربران معمولی نتونن به پنل مدیریت اصلی دسترسی پیدا کنند . و همینطور در مورد روش فعال سازی صفحات ثبت نام و ورود هم صحبت میکنم و به شما آموزش میدم 

رایگان 04:34
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 1180 نفر
قیمت دوره 125000 تومان
وضعیت دوره تکمیل شده
زمان کل دوره 30:19:42
تعداد قسمت‌ها 51
نوع دسترسی نقدی

آفلاین
user-avatar
مدرس دوره حسام موسوی

اول داستان، طراح گرافیک بودم و ۲ سالی به عنوان طراح مشغول بودم، بعد به برنامه‌نویسی علاقمند شدم و الان بیشتر از ۱۰ ساله که عاشق کدزنی و چالش‌های پروژه‌های مختلفم. به تدریس علاقه خاصی دارم و دوست دارم دانشی که در این راه بدست آوردم را در اختیار دیگران هم قرار بدم. 

سوالات و گفتگو‌ها

سوالات و گفتگو‌ها

اگر سوال و مشکلی یا حتی بحثی در یکی از حوزه‌های برنامه‌نویسی دارید این بخش به شما کمک ویژه‌ای خواهد کرد

دورهای پیشنهادی

مشاهده همه دوره ها
آشنایی با امکانات جدید لاراول 6

آشنایی با امکانات جدید لاراول 6

لاراول ۶ به تازگی توسط تیم توسعه دهنده لاراول معرفی شده، ما قصد داریم در این دوره امکانات جدیدی که به واسطه لاراول ۶ در اختیار توسعه دهندگان قرار گرفت...

ساخت Api با Laravel و GraphQl

ساخت Api با Laravel و GraphQl

graphQl یک ابزار جدید برای ایجاد کردن Api پیشرفته برای برنامه های ماست که توسط فیسبوک معرفی شده است.  این ابزار به عنوان یک Query language شناخته میشو...

دسترسی رایگان برای اعضای ویژه
آشنایی با امکانات جدید لاراول 5.5

آشنایی با امکانات جدید لاراول 5.5

در همین ابتدای این دوره باید بگم کسانی میتونن این دوره رو مشاهده کنند که با لاراول آشنا باشن پس اگر هنوز نمی دونید که لاراول چطور کار میکنه ، لطف ابتد...

آشنایی با امکانات جدید لاراول 5.4

آشنایی با امکانات جدید لاراول 5.4

در همین ابتدای این دوره باید بگم کسانی میتونن این دوره رو مشاهده کنند که با لاراول آشنا باشن پس اگر هنوز نمی دونید که لاراول چطور کار میکنه ، لطف ابتد...

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
آفلاین
user-avatar

استاد شما گفتید که من این کد رو اضافه کنم

    if(auth()->check()) {
            if(auth()->user()->isAdmin())
                return $next($request);
        }

        return redirect('/');

وقتی اینو تو میدل ور اضافه کردم حتی اگر level کاربر Admin باشه وقتی میزنم admin/panel ریدایرکت میکنه به صفحه اصلی اصلا شرط ()auth()->check رو چک نمیکنه و false برمیگردونه

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

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

    public function isAdmin()
    {
        return $this->level == 'admin' ? true : false;
    }

در کدتون من دیدم که شما کد بالا رو زدید اگر level برابر (نبود) با admin رو وارد کردید که اشتباه هست

آفلاین
user-avatar

استاد سلام، برا من وقتی میدل ور checkAdmin میخواد اجرا بشه یه ارور میده :

ارور هنگام اجرای هر روت authenticate

فایل web.php
web.php

CheckAdminUser.php

![توضیح تصویر رو وارد کنید][3]

متد isAdmin
توضیح تصویر رو وارد کنید

[3]:
https://static.roocket.ir/images/editor/2020/6/10/xYcZ7OFHSPAsk74aubZaf5piZeBCqxkWKElgFSQ1.png

اینم کل فایل Web.php

بنده از ورژن 6 لاراول استفاده میکنم
اینم بگم که آموزشاتون فوق العاده است

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

سلام
این کد رو در میدلور قرار بدید

        if(auth()->check()) {
            if(auth()->user()->isAdmin())
                return $next($request);
        }

        return redirect('/');
آفلاین
user-avatar
Ali Abbasi
3 ماه پیش

سلام آقای موسوی
یه سوالی در رابطه با کد زیر داشتم

Route::group(['namespace' => 'Admin' , 'middleware' => ['auth:web'] , 'prefix => 'admin'] , function(){
    ...
});

چرا توی بخش مربوط به middleware اومدید و یک web هم به auth اضافه کردید. کاربرد این web چی هستش. اگر این web نباشه احراز هویت کار نمی کنه؟
تا اونجایی که خودم خوندم اگر اشتباه نکنم باید مربوط به Middleware Parameters باشه ولی خوب کامل متوجه نشدم ممنون میشم در رابطه با این web توضیح بدید.

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

میدلور auth میتونه پارامتر دریافت کنه و بر اساسش احرازهویت مختلفی انجام بده کلا دوتا مقدار میگیره api و web که ما چون روت‌های وب رو داریم میسازیم این مقدار رو بهش پاس دادیم

آفلاین
user-avatar
Alireza00027
4 ماه پیش

خیلی ممنونم ازتون

آفلاین
user-avatar
Alireza00027
4 ماه پیش

سلام و خسته نباشید
سوالم اینه که در دستوره php artisanدستوری به نامmake:authوجود نداره
چرا؟؟؟!!!

آفلاین
user-avatar
حسام موسوی
4 ماه پیش

سلام این بخاطر این هست که شما دارید از لاراول ۷ استفاده میکنید . یا با ورژنی که در این دوره رفتیم پیش برید یا اگر میخواید با اخرین ورژن پیش برید دستورات زیر رو بزنید تا اوکی بشه همه چی براتون

composer require laravel/ui
php artisan ui:auth
php artisan ui:controllers
آفلاین
user-avatar
negar94
5 ماه پیش

ممنونم ازتون جواب داد
. بله شاید در فیلم های بعدی توضیح دادید و باید تمام فیلمها رو ببینم بعد بپرسم . چون در این فیلم این نکته نبود.
ولی یمقدار ترتیب اجرای اینها برام مبهمه .
مثلا اگر همین کد شما رو برعکس بنویسم جواب نمیده و در هر صورت به home وارد میشه .

    protected $redirectTo = 'home';
 public function handle($request, Closure $next)
    {
        if(auth()->check() && auth()->user()->level == 'admin'){
            return redirect(route('panel'));
        }

            return $next($request);
     }

فکر میکنم باید داکیومنت authenticate رو دقیق تر بخونم . چون دوست دارم بتونم هر قسمت رو costomize ,و overide کنم .

آفلاین
user-avatar
negar94
5 ماه پیش

من طبق گفته شما یک صفحه ی لاگین مشترک برای ادمین و یوزر ساختم .

میخوام اگر ادمین بود ، بعد از لاگین به صفحه ی admin panel ریدایرکت بشه و اگه کاربر بود به صفحه ی home از سایت ریدایرکت بشه .

چون یک logincontroller داریم این کد اجرا میشه .

protected $redirectTo = '/home';

در middleware هم این کد ی که تغییر دادم منطقی نیست و جواب نمیده .

public function handle($request, Closure $next)
    {
        if(auth()->check() && auth()->user()->level == 'admin'){
            return redirect('panel');
        }

        if(auth()->check() && auth()->user()->level == 'user'){
            return redirect('home');

   }
    return $next($request);

     }
آفلاین
user-avatar
حسام موسوی
5 ماه پیش

در این مورد هم در دوره توضیح دادم، ندادم ؟
ببینید مقدار زیر در کنترلر logincontroller

protected $redirectTo = '/home';

رو به کد زیر تغییر بدید

protected $redirectTo = '/admin/panel';

یا هر روت دیگه‌ای که میخواید !
یک میدلور برای روت‌های مدیریت قرار بدید به شکل زیر که اتفاقا در این مورد هم در دوره صحبت کردم

    public function handle($request, Closure $next)
    {
        if(auth()->check() && auth()->user()->level != 'admin'){
            return redirect('home');
        }

        return $next($request);
     }

من حس میکنم همه این موارد رو در دوره گفتم !

آفلاین
user-avatar
negar94
5 ماه پیش

ممنون از شما . مقاومت نمیکنم . میپرسم که بدونم و به نتیجه برسم .

آفلاین
user-avatar
حسام موسوی
5 ماه پیش

بسیار باعث خوشحالیه داشتن این روحیه

آفلاین
user-avatar
negar94
5 ماه پیش

شما در ویدیوی یازدهم ، دقیقه حدود 12:40 فرمودید که اگر کسی بعنوان یوزر وارد شد بهش خطای اینکه شما ادمین هستی رو نشون نمیدیم ، چون همون بهتر که ندونه اون پنل مدیریته .
علاوه بر این صحبت شما ، اینطور دیده و شنیده بودم که باید صفحه ی لاگین مدیر اصلی در دسترس همه نباشه .
درسته که اهراز هویت و مسایل دیگه روی امنیت تاثیر داره ولی تصورم این بود که جدا کردن صفحه ی لاگین هم مهمه .

آفلاین
user-avatar
حسام موسوی
5 ماه پیش

تنها نکته مهم حرازهویت هست . جداسازی فرم لاگین کاربران از مدیریت صرفا باعث امنیت نمیشه .
چون کاربر همون کاربره با هر دو فرم لاگین میکنه اینکه به یک صفحه‌ای دسترسی داشته باشه یا نه با احرازهویتش انجام میشه و همینطور اجازه دسترسی .
اینو کسی داره بهتون میگه که کار کرده دوست عزیز نمی دونم چرا مقاوت میکند در مقابل این حرف
شما اگر دوست دارید و حس بهتری بهتون دست میده صفحات ورود مدیریت و کاربر معمولی رو جدا بفرمایید و روت جدا براشون بنویسید.
اگرم خیلی باز سختتونه میتونید از mutli auth و دو جدول کاربر جدا استفاده کنید که صد البته فقط پروژه اتون رو پیچیده میفرمایید.

آفلاین
user-avatar
negar94
5 ماه پیش

مثلا یک سایت فروشگاهی رو درنظر بگیرید .

مدیران سایت مسوول ثبت محصولات هستند.
کاربران عادی سایت هم ، بعد از ثبت نام میتونن محصول رو خریداری کنند .

ایا فرم های ثبت نام کاربران و مدیران در این مثال باید یکی باشه .
و همین طور فرم های لاگین شون .

اگر اینطور باشه که پنل مدیریت امنیت لازم رو نداره

آفلاین
user-avatar
حسام موسوی
5 ماه پیش

امنیت پنل مدیریت چه ربطی به فرم و ورود و ثبت نام داره ؟
کسی که میخواد به پنل مدیریت دسترسی داشته باشه باید اجازه دسترسی داشته باشه که در جلسات قبل هم توضیح دادیم و هم پیاده سازی کردیم .

آفلاین
user-avatar
negar94
5 ماه پیش

منظور من ایجاد دو جدول نیست .
منظورم فرم های ثبت نام و لاگین مدیران و کاربران هست که بهتره تفکیک باشه .

فیلد type رو خود کسی که ثبت نام میکنه منطقی نیست تعیین کنه مدیره یا کاربر .
بلکه بهتره فرم ثبت نام ها جدا باشه که هنگام ذخیره سازی type هاشون بصورت default ذخیره بشن .

و در مورد لاگین هم ، معمولا به این شکل هست که صفحه ی لاگین مدیران از کاربران سایت جدا هست .

من میخوام اینو پیاده سازی کنم . ولی منطق پیاده سازیشو نمیدونم.
و از طرفی میدونم به multi auth هم ارتباط نداره

آفلاین
user-avatar
حسام موسوی
5 ماه پیش

شما دوره رو ببینید قشنگ توضیح دادیم که چیکار کنیم .
دوست دارید صفحه رو جدا کنید روت‌های جدا و فرم جدا بسازید و کارو انجام بدید . ولی در کل نیاز نیست .

آفلاین
user-avatar
negar94
5 ماه پیش

با سلام .
ایا نباید فرم ثبت نام و لاگین کاربران سایت از مدیران سایت جدا باشه .
چون نباید فرم لاگین مدیر در دسترس همه باشه .
اگر بخوام اینطور پیاده سازی کنم باید دو تا auth ایجاد کنم ؟

آفلاین
user-avatar
حسام موسوی
5 ماه پیش

خیر نیازی به این کار نیست . تنها یک فیلد type مثلا به کاربرها میدید که نوع کاربر مشخص باشه
ایجاد دو جدول برای دو نوع کاربر فقط باعث افزایش پیچیدیگی دوره میشه