آشنایی با احراز هویت یا Authentication در لاراول

دسته بندی: برنامه نویسی
سطح مقاله: متوسط
زمان مطالعه: 9 دقیقه
۰۸ خرداد ۱۳۹۸

راه اندازی یک پروژه با فریمورک لاراول بسیار ساده است. بسیاری از امکانات سایت مانند احراز هویت به صورت پیشفرض در لاراول تعریف شده اند و کدهای آن ها آماده استفاده است. در بسیاری از پروژه ها احتیاجی به ایجاد تغییر در سیستم احراز هویت پیشفرض لاراول نیست. یعنی برای استفاده از آن کافی است سیستم احراز هویت را فعال کنید. در این مطلب قصد داریم به آموزش فعالسازی و استفاده از سیستم احراز هویت لاراول بپردازیم. پس تا پایان مقاله با ما همراه باشید و آموزش را دنبال کنید.

آموزش احراز هویت لاراول

فهرست محتوای این مقاله

آموزش فعالسازی سیستم احراز هویت در فریمورک لاراول

در این بخش می آموزید که چگونه سیستم احراز هویت پیشفرض لاراول یا Auth را فعال و از آن استفاده کنید. در این مطلب از لاراول 5.8 استفاده کرده ایم. پس از نصب فریمورک لاراول شروع به دنبال کردن ادامه آموزش کنید. اگر با نصب و شروع کار با فریمورک لاراول آشنایی ندارید می توانید مقاله ما در مورد شروع کار با فریمورک لاراول را مشاهده کنید.

آماده سازی تنظیمات دیتابیس

مایگریشن (Migration) مربوط به جداول کاربران و بازیابی رمز عبور آن ها به طور پیشفرض در پوشه database>migrations ایجاد شده است. اگر ستون های اضافه ای برای جدول کاربران خود در نظر گرفته اید، می توانید آن ها را در مایگریشن جدول کاربران یعنی create_users_table.php وارد کنید. مثلا ما در اینجا ستونی به نام Phone از نوع رشته یا String به ساختار جدول اضافه می کنیم:

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('phone');
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

حال باید دستور migrate را اجرا کنید تا جداول مربوط به آن ها در دیتابیس ایجاد شود. اما قبل از این کار نیاز دارید که اطلاعات دیتابیس خود را به لاراول معرفی کنید. بنابراین MySQL سیستم را فعال کرده و یک دیتابیس جدید با نام auth یا هر نام دلخواه دیگر در آن بسازید:

پس از ساخته شدن دیتابیس باید اطلاعات آن را به لاراول معرفی کنیم. فایل .env در پوشه اصلی پروژه را باز کنید. به بخشی از فایل بروید که اطلاعات دیتابیس در آن قرار دارد:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

نام دیتابیس، هاست آن، نام کاربری و رمز عبور را به تناسب تنظیمات خودتان وارد کنید. خط فرمان را در مسیر پوشه پروژه باز کرده و دستور زیر را در آن وارد کنید:

php artisan migrate

اگر همه چیز درست پیش رفته باشد عملیات مایگریشن با پیام Migration table created successfully. به پایان می رسد. می توانید برای دیدن جداول، دیتابیس خود را باز کنید.

راه اندازی سیستم احراز هویت

سیستم احراز هویت شما تقریبا آماده است. اما اگر پروژه لاراولی خود را با دستور php artisan serve راه اندازی کنید، می بینید که اثری از Route های مخصوص احراز هویت نیست. برای راه اندازی این سیستم نیاز به وارد کردن یک دستور در خط فرمان خود دارید. بنابراین خط فرمان را در پوشه پروژه باز کرده و دستور زیر را در آن وارد کنید:

php artisan make:auth

این دستور تمام ویوهای مربوط به احراز هویت و Route های آن را ایجاد می کند. حال می توانید به راحتی از امکانات ورود، ثبت نام و بازیابی رمز عبور پیشفرض لاراول استفاده کنید. در قسمت بعدی به آموزش استفاده از امکانات احراز هویت لاراول می پردازیم.

Route های مربوط به احراز هویت

بیایید اول نگاهی به Route ها در فایل web.php بیندازیم. همانطور که می بینید دو روت جدید به پروژه مان اضافه شده است:

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Auth::routes()تمام روت های مربوط به سیستم احراز هویت مثل روت های ورود، ثبت نام و بازیابی رمز عبور را به پروژه اضافه می کند. روت دوم home نام دارد که کاربر بعد از ورود، به این مسیر هدایت خواهد شد. شما می توانید با دستور php artisan route:list [/ltr] لیست تمام این روت ها را ببینید. اما برای راحتی کار ما تمام این روت ها را برای شما لیست کرده ایم:

/**
 * Login Route(s)
 */
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
/**
 * Register Route(s)
 */
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');
/**
 * Password Reset Route(S)
 */
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');
/**
 * Email Verification Route(s)
 */
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

البته احتیاجی نیست که این روت ها را به فایل wep.php اضافه کنید. چرا که همانطور که گفتیم تمام این روت ها در دستور Auth::routes() خلاصه شده اند. اما با استفاده از راهنمای بالا می توانید بفهمید برای دسترسی مستقیم به هر روت می توانید از چه مسیری استفاده کنید.

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

در این لحظه زمان آن رسیده که قدرت واقعی لاراول را ببینیم! یک صفحه جدید برای خود بسازید. در ویو صفحه متنی بنویسید که دوست دارید فقط برای کاربران وارد شده نمایش داده شود و یا یک المنت HTML بسازید. انجام دادن این کار بسیار ساده است! فرض کنید المنت با id=”newElement” المنتی است که می خواهیم از دسترس کاربران مهمان خارج شود:

@auth
    <p id="newElement">به کاربران مهمان نمایش نده</p>
@else
    <p id="newElement">به کاربران مهمان نمایش بده</p>
@endauth

اگر از اکانت خود خارج شوید و یا هنوز وارد نشده باشید، با اجرای این صفحه المنت جدید را نخواهید دید. به طور کلی برای نمایش دادن اطلاعات مخصوص به کاربران وارد شده می توانید از دستور @auth در blade به این صورت استفاده کنید:

@auth
    logged in users data
@else
    guest users data
@endauth

برای نمایش اطلاعات به کاربران وارد نشده هم می توانید از دستور @guest به این صورت استفاده کنید:

@guest
    guest users data
@else
    logged in users data
@endguest

در بعضی موقعیت ها احتیاج داریم اطلاعات کاربری که وارد شده است را به دست آوریم. انجام این کار هم بسیار ساده است. کافی است به این صورت عمل کنیم:

{{ Auth::user()->name }} {{-- <- Name of the user --}}
{{ Auth::user()->email }} {{-- <- Email of the user --}}
{{ Auth::user()->id }} {{-- <- id of the user --}}
{{-- Laravel also has shorthand method for id --}}
{{ Auth::id() }} {{-- <- shorthand for id --}}

جمع بندی

فریمورک لاراول در نسخه 5.8 خود تمامی امکانات یک سیستم احراز هویت کامل را در خود به طور پیشفرض آماده کرده است. این امکانات شامل ثبت نام، ورود، بازیابی رمز عبور و ارسال ایمیل تایید حساب کاربری می شود. می بینید که به ندرت اتفاق می افتد پروژه ای به امکاناتی غیر از این موارد احتیاج داشته باشد. در این آموزش به معرفی سیستم احراز هویت پیشفرض لاراول و روش استفاده اولیه از آن پرداختیم. آیا شما تجربه استفاده از احراز هویت آماده فریمورک لاراول را داشته اید؟ نظرات شما را با لذت می خوانیم!

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

 

چه امتیازی به این مقاله می دید؟
نویسنده

نظرات کاربران

علی رضوی

عالی بود خانم فرحمند دستتون دردنکنه

Mohammad

مقاله خوبی بود تشکر از تیم سون لرن!
فقط خواهشا بخش سرچ رو هم به سایت اضافه کنید تا بتونیم مقاله های مورد نظرمون رو پیدا کنیم.
به شخصه برای پیدا کردن یک ویدئو ضبط شده توسط استاد علی محمدی خیلی گشتم تا پیدا کردم!

زهرا فرحمند

سلام محمد عزیز. بخش سرچ در سایت وجود داره 🙂

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 
گزارش مشکل