سیستم احراز هویت در لاراول 6 Laravel

احراز هویت در لاراول

لاراول به عنوان محبوبترین فریم ورک PHP، ابزار ها و امکانات قدرمندی در اختیار برنامه نویس قرار می دهد. می توان ادعا کرد که هیچ کاری در لاراول غیر ممکن نیست و حتی آسانتر از بقیه فریم ورک هاست. از جمله امکانات قدرتمندی که LARAVEL در اختیار سایت نویسان قرار می دهد، سیستم احراز هویت آن است که مهم ترین قسمت برای سرویس لاگین کردن login  سیستم است. استفاده از این سیستم در لاراول 6 ، کمی متفاوت با لاراول 5.8 است.

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

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

سیستم احراز هویت لاراول

لاراول به صورت پیش فرض از جدول users برای احراز هویت یا تصدیق هویت کاربر استفاده می کند. راه اندازی سیستم authentication در لاراول 6 و نسخه های قبل از آن متفاوت است. برای فراگیری کامل این سیستم، لازم است اجرای آن را در هر دو نسخه لاراول 6 و لاراول 5.8 بررسی کنیم.

احراز هویت در لاراول

ساخت پروژه لاراول با نسخه دلخواه 5.8

 برای ساخت پروژه با لاراول 5.8 باید دستور زیر را در خط فرمان وارد کنیم. لطفا به انتخاب ورژن لاراول در انتهای دستور توجه فرمایید:

با این دستور، پروژه لاراول تحت عنوان blog با نسخه 5.8.35 ساخته خواهد شد که آخرین بروزرسانی نسخه 5.8 می باشد.

معرفی پایگاه داده در لاراول

بعد از نصب کامل، database یا پایگاه داده خود را هم از طریق فایل env. به پروژه معرفی نمایید. مثلا:

اجزای پیش فرض پروژه لاراول بعد از نصب

بعد از اتمام نصب پروژه، توجه شما را به موارد زیر جلب می کنم:

  1. اگر دایرکتوری database > migrations را نگاه کنید، خواهید دید دو migration با نام های users و password_resets بوسیله خود لاراول ایجاد شده است. که اولی مایگریشن جدول users  است و دومی مربوط به reset کردن رمز عبور.
  2. اگر فایل routes > web.php را باز کنید خواهید دید تنها مسیر یا route ای که پیشفرض تعریف شده است، مسیر صفحه اصلی پروژه می باشد.
  3. و اگر در دایرکتوری resources > views دقت کنید تنها فایل welcome را خواهید یافت.

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

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

مرحله اول: دستور زیر را در ترمینال Terminal یا همان Artisan وارد کنید:

تغییرات بعد از این دستور:

  1. route های زیر در فایل web.php اضافه شده اند که همان روت های احراز هویت لاراول هستند:

2. دایرکتوری layouts و فایل home.blade.php به فولدر resources > views افزوده شده اند.

مرحله دوم: کافیست برای نهایی کردن سیستم احراز هویت در لاراول 5.8 ، دستور زیر را وارد کنید:

با این دستور جدول users در دیتابیس شما تشکیل خواهد شد. در ادامه نحوه استفاده از این سیستم را توضیح خواهیم داد.

ساخت پروژه لاراول با نسخه

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

معرفی پایگاه داده در لاراول

بعد از نصب کامل لاراول 6، database یا پایگاه داده خود را هم از طریق فایل env. به پروژه معرفی نمایید. مثلا:

اجزای پیش فرض پروژه لاراول بعد از نصب

بعد از اتمام نصب پروژه، توجه شما را به موارد زیر جلب میکنم:

  1. اگر دایرکتوری database > migrations را نگاه کنید، خواهید دید سه migration با نام های users و password_resets و failed_jobs بوسیله خود لاراول ایجاد شده است. که اولی مایگریشن جدول users  است.
  2. اگر فایل routes > web.php را باز کنید خواهی دید تنها مسیر یا route ای که پیشفرض تعریف شده است، مسیر صفحه اصلی پروژه می باشد.
  3. و اگر در دایرکتوری resources > views دقت کنید تنها فایل welcome.blade.php را خواهید یافت.

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

برای راه اندازی تصدیق هویت کاربر در لاراول 6 مراحل زیر را دنبال خواهیم کرد:

مرحله اول:

در لاراول 6 سیستم احراز هویت یا تصدیق کابر به صورت یک پکیج در composer تهیه شده است و اولین کار دانلود این پکیج است. برای دانلود پکیج، دستور زیر را در ترمینال Terminal وارد می کنیم:

مرحله دوم:

پس از دانلود پکیج احراز هویت لاراول 6، نوبت به نصب آن در پروژه مان می رسد که با دستور زیر قابل اجراست:

پس از اجرای دستور، سیستم احراز هویت لاراول یا همان تصدیق هویت کاربر به آسانی نصب می شود.

تغییرات بعد از این دستور:

  1. route های زیر در فایل web.php اضافه شده اند که همان روت های احراز هویت لاراول هستند :

2. دایرکتوری layouts و فایل home.blade.php به فولدر resources > views افزوده شده اند.

مرحله سوم:

برای نهایی کردن سیستم تصدیق هویت در لاراول 6 دستور زیر را وارد می کنیم:

با این دستور جدول users در دیتابیس شما تشکیل خواهد شد. در ادامه نحوه استفاده از این سیستم را توضیح خواهیم داد.

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

اگر چنانچه در Terminal دستور زیر را تایپ کنید، همه route های پروژه مخصوصا آنهایی که تازه ایجاد شده اند را با نام ها و URL شان مشاهده خواهید کرد:

لیست همه route ها در جدولی به نمایش گذاشته اند که در زیر به بررسی آنها و نحوه استفاده از آنها می پردازیم:

register :

   در جدول route ها ،دو روت به نام register اما با متد های متفاوت به چشم میخورد. register در فارسی به معنای ثبت نام است. شما اگر در مرورگر عبارت http://127.0.0.1:8000/register را تایپ کنید در واقع به روت register اما با متد GET یا HEAD خواهد رفت. وظیفه این route هدایت شما به صفحه ثبت نام کاربری است. این صفحه با نام register.blade.php در آدرس resources>views>auth موجود است. (اگر صفحه ثبت نام مرتب و زیبا نبود نترسید، باید npm را نصب کنید: npm install و سپس npm run dev).
هر چند در صفحه welcome دکمه های login و register در header موجود است اما در سراسر پروژه می توانیم از این route به دو صورت در فایل های view استفاده کرده و دکمه ورود طراحی کنیم:

یا :

پس از پر کردن فرم، و فشردن دکمه register روت register اما این بار با متد POST اجرا شده و مشخصات شما یا هر کاربری که ثبت نام کرده در جدول users ثبت خواهد شد.

 اگر در جدول لیست route ها به قسمت action این route دقت کنید می بینید که مقصد یا اکشن این روت، متد یا فانکشن register در کنترلر RegisterController به آدرس زیر است :

app\Http\Controllers\Auth\RegisterController

login :

در جدول route ها ،دو روت دبگر نیز به نام login اما با متد های متفاوت به چشم میخورد. login در فارسی به معنای ورود کاربر است اما کاربری که قبلا ثبت نام یا register کرده. شما اگر در مرورگر عبارت http://127.0.0.1:8000/login را تایپ کنید در واقع به روت login اما با متد GET یا HEAD خواهد رفت. وظیفه این route هدایت شما به صفحه ورود کاربری است. این صفحه با آدرس زیر موجود است:

resources>views>auth>login.blade.php

هر چند در صفحه welcome  دکمه های login و register در header موجود است اما در سراسر پروژه می توانیم از این route به دو صورت در فایل های view استفاده کرده و دکمه ورود طراحی کنیم:

یا :

پس از پر کردن فرم، و فشردن دکمه Login ، روت login ولی این بار با متد POST اجرا و چنانچه مشخصات شما هم صحیح بوده و قبلا ثبت نام کرده باشید، اجازه ورود برای شما داده خواهد شد.

اگر در جدول لیست route ها به قسمت action این route دقت کنید می بینید که مقصد یا اکشن این روت، متد یا فانکشن login در کنترلر LoginController به آدرس زیر است :

app\Http\Controllers\Auth\LoginController

home  :

در واقع این روت زمانی اجرا خواهد شد که کاربر ثبت نام کند یا وارد شود. به عبارتی این روت بعد از اجرای صحیح route های register و login به صورت پیش فرض یا default اجرا خواهد شد. وظیفه این route هدایت شما به صفحه یا ویوی home.blade.php  است که بعد از فعالسازی سیستم احراز هویت اضافه گردیده است. شما می توانید به جای صفحه home.blade.php صفحه view دیگری انتخاب کنید تا کاربر بعد از تصدیق هویت کاربر، به آن صفحه هدایت یا redirect  گردد.

برای این کار باید در کنترلر های RegisterController و LoginController ، مقدار home/  را در دستور زیر تغییر دهید :

مثلا بنویسید :

تا به صفحه welcome.blade.php هدایت شود. توجه کنید که هر مقداری در این دستور باید از طریق یک route در فایل web.php تعریف شود. مثلا اگر به جای home/ بنویسیم  about/  ، باید یک route مثلا بدین صورت تعریف کنیم:

و در ضمن باید فایل about.blade.php موجود باشد.

logout  :

این route با متد POST برای خروج یا Logout استفاده می شود. درواقع این متدی است که اگر کاربر login باشد، کار اجرای خروج کاربر از سیستم را انجام خواهد داد. این route را نمی توان در آدرس بار مرورگر تایپ و اجرا کرد چون متد این روت از نوع POST می باشد. این route می تواند بدین صورت اجرا شود اما در کنترلر ها. مثلا :

استفاده از سیستم یا سرویس احراز هویت لاراول در فایل های view  یا blade

شما می توانید، به راحتی با دستورات یا directive های blade از سیستم تصدیق هویت کاربر استفاده کنید. در زیر به توضیح برخی از این دایرکتیو ها می پردازیم :

  • auth@

با استفاده از این دستور در فایل blade یا همان view، می توانید کاربر عضو را احراز هویت یا مورد هدف قرار دهید. مثلا اگر در صفحه welcome در جایی دستور زیر را بنویسد :

چناچه کاربر login  شده باشد، عبارت ” شما وارد سایت شده اید ” را خواهد دید. این directive باید با عبارت @endauth بسته شود. همچنین به مثال زیر دقت کنید :

  • guest@

  با استفاده از این دستور در فایل blade یا همان view، می توانید کاربر مهمان را احراز هویت یا مورد هدف قرار دهید. مثلا اگر در صفحه welcome در جایی دستور زیر را بنویسد :

تنها کاربرانی عبارت “شما وارد نشده اید” را خواهند دید که login  نشده اند و درواقع مهمان یا guest هستند. این directive باید با عبارت endguest@ بسته شود.

  • ()auth()->user

با این دستور می توان تمام اطلاعات کاربری که login هست را گرفت که در مثال، ما نام کاربر را مورد هدف قرار داده ایم :

این دستور باید داخل {{  }} یا {!! !!}نوشته شود.

  • ()Auth::user

با این دستور می توان تمام اطلاعات کاربری که login هست را گرفت که در مثال، ما نام کاربر را مورد استفاده قرار داده ایم :

این دستور باید داخل {{  }} یا {!! !!}نوشته شود.

  • ()auth()->id

با این دستور می توان id کاربری که login هست را گرفت. مثال:

این دستور باید داخل {{  }} یا {!! !!}نوشته شود.

  • ()Auth::id

با این دستور می توان id کاربری که login هست را گرفت. مثال:

این دستور باید داخل {{  }} یا {!! !!}نوشته شود.

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

  • ()Auth::user

در مثال زیر، برای سرویس  احراز  هویت کاربر لاگین شده را گرفته و با تمام اطلاعاتش به ویوی profile تزریق می کنیم:

حتی می توان تمام اطلاعات کاربر را دریافت کرد مثلا:

  • ()Auth::id

با دستور زیر هم می توان id کاربر login شده را گرفت:

Middleware یا میدل ویر auth در لاراول

می توانیم با RouteMiddleware و اعمال میدل ویر auth در هر route ای، تنها به کاربرانی که احراز هویت شده اند اجازه دسترسی به آن مسیر یا route را بدهیم.

در مثال بالا تنها کاربرانی که login شده اند به صفحه profile اجازه دسترسی پیدا خواهند کرد.از میدل ویر auth در کنترلر ها نیز می توان استفاده کرد. لازمه این کار ایجاد یک constructor یا متد سازندهدر کنترلر است. به مثال زیر که همان HomeController خود سیستم احراز هویت لاراول است دقت کنید:

تنها کاربرانی که وارد یا login شده اند اجازه دسترسی به صفحه home را خواهند داشت. چنانچه متد های دیگری نیز در این کنترلر ثبت شوند، باز تنها کاربران غیر مهمان اجازه دسترسی به آنها را خواهند داشت.

جمع بندی

در پایان می توان گفت سیستم یا سرویس احراز هویت و یا تصدیق هویت کاربر در لاراول، بسیار آسان و قابل انعطاف بوده و با چند دستور ساده در تمامی نسخه های لاراول، در دسترس است. شما بعد از مشاهده فیلم آموزشی موجود در این جلسه، قادر به پیاده سازی پیشرفته احراز هویت لاراول بوده و یاد خواهید گرفت که چگونه پس از راه اندازی، حتی تغییرات دلخواه خود را در کنترلر ها و view  های احراز هویت لاراول 6 و حتی لاراول 5.8 انجام داده و از انعطاف پذیری بیش از حد آن استفاده کنید.

می توانید کاری کنید که کاربران بر اساس ایمیل یا نام و یا هر دو ، فرم ورود را پر کنند در حالیکه  لاراول بصورت پیش فرص، در فرم ثبت نام با ایمیل login می کند.مشاهده این محصول ویدیویی شما را قادر به دستکاری فرم های ورود و ثبت نام، متد های validate، و نمایش خطاهای request دلخواه خواهد کرد. خواهید توانست سیستم تصدیق هویت کاربر در لاراول را به راحتی و شیرینی آموخته و در همه پروژه های تان استفاده نمایید. اطلاعات هر کاربر login شده را گرفته و در هر کجای برنامه نشان خواهید داد.

مطالب زیر را حتما بخوانید

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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