برنامه نویسی با محبوب ترین فریم ورک پی اچ پی #3
در این بخش قصد داریم با middleware یکی دیگه از اجزای اساسی لاراول که وظیفه اون فیلتر کردن درخواستهای ورودی به برنامه هست آشنا بشیم و با مثالهای کاربردی اون رو بررسی کنیم . پس با ما همراه باشید.
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
Middleware
Middleware یک مکانیسم ساده جهت فیلتر کردن درخواست های ورودی به برنامتون هست.به طور مثال لاراول یک Middleware با نام auth داره که وظیفه اون احراز هویت کاربران هست. در صورتی که هویت کاربران مشخص شده و لاگین شده باشند، اجازه پیش روی در برنامه و درخواست جدید را صادر و غیراینصورت برنامه به صفحه لاگین هدایت می شود.
تعریف Middleware
برای تعریف Middleware در لاراول کافیست که از طریق ترمینال خود به دایرکتوری برنامه خود رفته و سپس با وارد کردن دستور زیر یک Middleware ایجاد نمائیم.
php artisan make:middleware LaravelMiddleware
با اجرای دستور فوق یک کلاس با نام LaravelMiddleware در دایرکتوری app/Http/Middleware ایجاد خواهدشد.
توجه!!. کلیه شروط مربوط به فیلتر کردن درخواست ها در متد handle نوشته می شود.
به کد ذیر توجه کنید:
namespace AppHttpMiddleware;
use Closure;
class OldMiddleware
{
/**
* Run the request filter.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->input('age') <= 20) {
return redirect('home');
}
return $next($request);
}
}
در مثال فوق ما یک Middleware با نام OldMiddleware ایجاد کردیم با قراردادن شرط سنی بالای 20 سال، اجازه ادامه فعالیت در برنامه داده می شود و در غیر اینصورت برنامه کاربر را به صفحه home هدایت می کند.
Before / After Middleware
باتوجه به ساختار Middleware امکان اجرای آن قبل و یا بعد از دریافت درخواستها فراهم شده است.به طور مثال در کلاس زیر دستورات قبل از درخواست اجرا میشود:
namespace AppHttpMiddleware;
use Closure;
class BeforeMiddleware
{
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
}
و یا بعد از درخواست اجرا می شوند:
namespace AppHttpMiddleware;
use Closure;
class AfterMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
// Perform action
return $response;
}
}
پارامترهای Middleware
Middleware ها می توانند پارامترهای مختلفی رو به عنوان ورودی دریافت کنند:
به طور مثال اگر در برنامه نیاز به بررسی نقش کاربران در سیستم دارید می توانید از نمونه کد زیر استفاده کنید:
به طور مثال اگر در برنامه نیاز به بررسی نقش کاربران در سیستم دارید می توانید از نمونه کد زیر استفاده کنید:
namespace AppHttpMiddleware;
use Closure;
class RoleMiddleware
{
/**
* Run the request filter.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @param string $role
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
// Redirect...
}
return $next($request);
}
}
در متد handle ابتدا نقش کاربران مورد بررسی قرار گرفته و درصورت صحت درخواست اجرا خواهد شد.
برای استفاده از پارامترها می تونید اونها رو بعد از آرگومان $next به عنوان ورودی متد handle مورد استفاده قرار بدید.
ثبت نام Middleware ها
درصورت استفاده از یک middleware در کل برنامه کافیست فایل kernel رو از دایرکتوری app/Http/Kernel.php بازکرده و middleware مربوطه را در آرایه $middleware ثبت کنید.
همچنین در صورت استفاده در مسیردهی (routing) می بایست پس از انتخاب یک نام کلیدی مناسب و ثبت آن در آرایه routeMiddleware از آن استفاده کرد.
به این مثال توجه کنید:
همچنین در صورت استفاده در مسیردهی (routing) می بایست پس از انتخاب یک نام کلیدی مناسب و ثبت آن در آرایه routeMiddleware از آن استفاده کرد.
به این مثال توجه کنید:
// Within AppHttpKernel Class...
protected $routeMiddleware = [
'auth' => AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
];
middleware های auth و یا guest برای استفاده در روتینگ و یا همان مسیریابی مورد استفاده قرار می گیرند.
استفاده از middleware ها در مسیریابی:
برای استفاده از middleware در مسیریابی از نام آن در مسیریابی استفاده می شود به کد زیر توجه کنید:
Route::get('admin/profile', ['middleware' => 'auth', function () {
//
}]);
همانطور که از کد بالا مشخص است برنامه پس دریافت درخواست admin/profile از url نسبت به بررسی شروطی که در متدhandle از middleware ثبت شده در فایل kernel با عنوان auth می پردازد و باتوجه به آن نسبت به اتخاذ تصمیم مناسب اقدام می کند.
استفاد از چندین middleware در یک مسیردهی
Route::get('/', ['middleware' => ['first', 'second'], function () {
//
}]);
نظرات و سوالات کاربران
هم اکنون شما اولین دیدگاه را ارسال کنید.