ഇതിനർത്ഥം ഉപയോക്താവ് (Laravel view) സെർവറിലേക്ക് (Laravel കൺട്രോളർ) ഒരു അഭ്യർത്ഥന നടത്തുമ്പോൾ, അഭ്യർത്ഥന മിഡിൽവെയറിലൂടെ പോകും എന്നാണ്. അഭ്യർത്ഥന പ്രാമാണീകരിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്ന് മിഡിൽവെയറിന് ഇതുവഴി പരിശോധിക്കാൻ കഴിയും:
Laravel നിങ്ങളെ അനുവദിക്കുന്നു defiപ്രാമാണീകരണം ഒഴികെയുള്ള വിവിധ ജോലികൾ പൂർത്തിയാക്കാൻ അധിക മിഡിൽവെയർ ഉപയോഗിക്കുക.
ആധികാരികത, CSRF സംരക്ഷണം തുടങ്ങിയ ലാറവെൽ മിഡിൽവെയറുകൾ ഡയറക്ടറിയിൽ സ്ഥിതിചെയ്യുന്നു അപ്ലിക്കേഷൻ/Http/മിഡിൽവെയർ .
അതിനാൽ, മിഡിൽവെയർ ഒരു http അഭ്യർത്ഥന ഫിൽട്ടറാണെന്ന് നമുക്ക് പറയാം, അതിലൂടെ വ്യവസ്ഥകൾ പരിശോധിക്കാനും പ്രവർത്തനങ്ങൾ നടത്താനും സാധിക്കും.
ഒരു പുതിയ മിഡിൽവെയർ സൃഷ്ടിക്കുന്നതിന് ഞങ്ങൾ ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നു:
php artisan make:middleware <name-of-middleware>
ഞങ്ങൾ സൃഷ്ടിക്കുന്നു middleware
ഞങ്ങൾ അതിനെ വിളിക്കുന്നു CheckAge
, artisan
ഇനിപ്പറയുന്ന രീതിയിൽ ഞങ്ങൾക്ക് ഉത്തരം നൽകും:
" എന്ന പേരിൽ മിഡിൽവെയർ വിജയകരമായി സൃഷ്ടിച്ചതായി മുകളിലുള്ള വിൻഡോ കാണിക്കുന്നു ചെക്ക് പ്രായം ".
ചെക്ക് ഏജ് മിഡിൽവെയർ സൃഷ്ടിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്നറിയാൻ, ആപ്പ്/എച്ച്ടിടിപി/മിഡിൽവെയർ ഫോൾഡറിലെ പ്രോജക്റ്റിലേക്ക് പോകുക, നിങ്ങൾ പുതുതായി സൃഷ്ടിച്ച ഫയൽ കാണും.
പുതുതായി സൃഷ്ടിച്ച ഫയലിൽ ഇനിപ്പറയുന്ന കോഡ് ഉണ്ട്
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
മിഡിൽവെയർ ഉപയോഗിക്കുന്നതിന്, ഞങ്ങൾ അത് രജിസ്റ്റർ ചെയ്യേണ്ടതുണ്ട്.
Laravel-ൽ രണ്ട് തരം മിഡിൽവെയർ ഉണ്ട്:
Middleware globale
Route Middleware
Il ആഗോള മിഡിൽവെയർ ആപ്ലിക്കേഷനിൽ നിന്നുള്ള എല്ലാ HTTP അഭ്യർത്ഥനകളിലും ഇത് നടപ്പിലാക്കും റൂട്ട് മിഡിൽവെയർ ഒരു പ്രത്യേക പാതയിലേക്ക് നിയോഗിക്കും. മിഡിൽവെയർ രജിസ്റ്റർ ചെയ്യാം app/Http/Kernel.php. ഈ ഫയലിൽ രണ്ട് പ്രോപ്പർട്ടികൾ അടങ്ങിയിരിക്കുന്നു $മിഡിൽവെയർ e $routeMiddleware . $മിഡിൽവെയർ പ്രോപ്പർട്ടി ആഗോള മിഡിൽവെയറും ഉടമസ്ഥതയും രജിസ്റ്റർ ചെയ്യാൻ ഉപയോഗിക്കുന്നു $routeMiddleware റൂട്ട്-നിർദ്ദിഷ്ട മിഡിൽവെയർ രജിസ്റ്റർ ചെയ്യാൻ ഉപയോഗിക്കുന്നു.
ആഗോള മിഡിൽവെയർ രജിസ്റ്റർ ചെയ്യാൻ, $മിഡിൽവെയർ പ്രോപ്പർട്ടിയുടെ അവസാനം ക്ലാസ് ലിസ്റ്റ് ചെയ്യുക.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
റൂട്ട്-നിർദ്ദിഷ്ട മിഡിൽവെയർ രജിസ്റ്റർ ചെയ്യാൻ, $routeMiddleware പ്രോപ്പർട്ടിയിലേക്ക് കീയും മൂല്യവും ചേർക്കുക.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
ഞങ്ങൾ സൃഷ്ടിച്ചു ചെക്ക് പ്രായം മുമ്പത്തെ ഉദാഹരണത്തിൽ. ഇപ്പോൾ നമുക്ക് ഇത് മിഡിൽവെയർ റൂട്ട് പ്രോപ്പർട്ടിയിൽ രജിസ്റ്റർ ചെയ്യാം. അത്തരമൊരു രജിസ്ട്രേഷനായുള്ള കോഡ് ചുവടെ കാണിച്ചിരിക്കുന്നു.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
];
മിഡിൽവെയർ ഉപയോഗിച്ച് നമുക്ക് പാരാമീറ്ററുകൾ കൈമാറാനും കഴിയും.
ഉദാഹരണത്തിന്, നിങ്ങളുടെ അപ്ലിക്കേഷന് ഉപയോക്താവ്, അഡ്മിൻ, സൂപ്പർ അഡ്മിൻ തുടങ്ങിയ വ്യത്യസ്ത റോളുകൾ ഉണ്ടെങ്കിൽ. ഒപ്പം റോളിനെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവർത്തനത്തെ ആധികാരികമാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു, മിഡിൽവെയർ ഉപയോഗിച്ച് പാരാമീറ്ററുകൾ കൈമാറിക്കൊണ്ട് നിങ്ങൾക്കത് ചെയ്യാൻ കഴിയും.
ഞങ്ങൾ സൃഷ്ടിച്ച മിഡിൽവെയറിൽ ഇനിപ്പറയുന്ന ഫംഗ്ഷൻ അടങ്ങിയിരിക്കുന്നു, ആർഗ്യുമെന്റിന് ശേഷം ഞങ്ങൾക്ക് ഇഷ്ടാനുസൃത ആർഗ്യുമെന്റുകൾ നൽകാം $അടുത്തത് .
public function handle($request, Closure $next)
{
return $next($request);
}
ഇപ്പോൾ നമുക്ക് ആദ്യം മുതൽ സൃഷ്ടിക്കാൻ പോകുന്ന ഒരു പുതിയ മിഡിൽവെയറിലേക്ക് റോൾ പാരാമീറ്റർ സജ്ജീകരിക്കാൻ ശ്രമിക്കാം, തുടർന്ന് ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിച്ച് റോൾ മിഡിൽവെയർ സൃഷ്ടിക്കുന്നത് തുടരുക
ഹാൻഡിൽ രീതി ഇനിപ്പറയുന്ന രീതിയിൽ പരിഷ്ക്കരിക്കുക
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
ഞങ്ങൾ പരാമീറ്റർ ചേർത്തു $role
, കൂടാതെ രീതിയുടെ ഉള്ളിൽ ലൈൻ echo
ഔട്ട്പുട്ട് റോളിന്റെ പേര് എഴുതാൻ.
ഇനി നമുക്ക് RoleMiddleware മിഡിൽവെയർ ഒരു നിർദ്ദിഷ്ട പാതയ്ക്കായി രജിസ്റ്റർ ചെയ്യാം
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
];
ഇപ്പോൾ പാരാമീറ്റർ ഉപയോഗിച്ച് മിഡിൽവെയർ പരിശോധിക്കുന്നതിന്, ഞങ്ങൾ ഒരു അഭ്യർത്ഥനയും പ്രതികരണവും സൃഷ്ടിക്കേണ്ടതുണ്ട്. പ്രതികരണം അനുകരിക്കുന്നതിന്, നമുക്ക് ടെസ്റ്റ് കൺട്രോളർ എന്ന് വിളിക്കുന്ന കൺട്രോളർ സൃഷ്ടിക്കാം
php artisan make:controller TestController --plain
ഇപ്പോൾ നടപ്പിലാക്കിയ കമാൻഡ് ഫോൾഡറിനുള്ളിൽ ഒരു പുതിയ കൺട്രോളർ സൃഷ്ടിക്കും app/Http/TestController.php
, കൂടാതെ രീതി മാറ്റുക index
ലൈനിനൊപ്പം echo "<br>Test Controller.";
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller {
public function index() {
echo "<br>Test Controller.";
}
}
പ്രതികരണം സജ്ജീകരിച്ച ശേഷം, ഫയൽ എഡിറ്റ് ചെയ്തുകൊണ്ട് ഞങ്ങൾ അഭ്യർത്ഥന നിർമ്മിക്കുന്നു routes.php
ചേർത്തുകൊണ്ട് route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
ഈ ഘട്ടത്തിൽ URL സന്ദർശിച്ച് നമുക്ക് ഉദാഹരണം പരീക്ഷിക്കാം http://localhost:8000/role
ബ്രൗസറിൽ നമുക്ക് രണ്ടും കാണാം echo
Role editor
Test Controller
Il terminable Middleware
പ്രതികരണം ബ്രൗസറിലേക്ക് അയച്ചതിന് ശേഷം ചില ജോലികൾ ചെയ്യുന്നു. രീതി ഉപയോഗിച്ച് ഒരു മിഡിൽവെയർ സൃഷ്ടിച്ചുകൊണ്ട് ഇത് നേടാനാകും മിഡിൽവെയറിൽ അവസാനിപ്പിക്കുക. Il terminable Middleware
എന്നിവയിൽ രജിസ്റ്റർ ചെയ്തിരിക്കണം middleware
ആഗോള. രീതി terminate
രണ്ട് വാദങ്ങൾ ലഭിക്കും $അഭ്യർത്ഥന e $പ്രതികരണം.
രീതി Terminate
ഇനിപ്പറയുന്ന കോഡിൽ കാണിച്ചിരിക്കുന്നതുപോലെ സൃഷ്ടിക്കണം.
php artisan make:middleware TerminateMiddleware
മിഡിൽവെയർ സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ app/Http/Middleware/TerminateMiddleware.php
നമുക്ക് കോഡ് ഇനിപ്പറയുന്ന രീതിയിൽ പരിഷ്കരിക്കാം
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware.";
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware.";
}
}
ഈ സാഹചര്യത്തിൽ ഞങ്ങൾക്ക് ഒരു രീതിയുണ്ട് handle
ഒരു രീതിയും terminate
രണ്ട് പരാമീറ്ററുകൾക്കൊപ്പം $request
e $response
.
ഇനി മിഡിൽവെയർ രജിസ്റ്റർ ചെയ്യാം
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
];
പ്രതികരണം അനുകരിക്കാൻ ഇപ്പോൾ നമ്മൾ കൺട്രോളർ സൃഷ്ടിക്കേണ്ടതുണ്ട്
php artisan make:controller XYZController --plain
ക്ലാസിലെ ഉള്ളടക്കങ്ങൾ പരിഷ്കരിക്കുന്നു
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
ഇപ്പോൾ നമുക്ക് ഫയൽ എഡിറ്റ് ചെയ്യണം routes/web.php
അഭ്യർത്ഥന സജീവമാക്കുന്നതിന് ആവശ്യമായ റൂട്ടുകൾ ചേർക്കുന്നു
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
ഈ ഘട്ടത്തിൽ URL സന്ദർശിച്ച് നമുക്ക് ഉദാഹരണം പരീക്ഷിക്കാം http://localhost:8000/terminate
ബ്രൗസറിൽ നമുക്ക് ഇനിപ്പറയുന്ന വരികൾ കാണാം
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
നിങ്ങൾക്കിഷ്ടപ്പെട്ടേക്കാം:
ആപ്പിൾ വിഷൻ പ്രോ കൊമേഴ്സ്യൽ വ്യൂവർ ഉപയോഗിച്ചുള്ള ഒഫ്താൽമോപ്ലാസ്റ്റി ഓപ്പറേഷൻ കാറ്റാനിയ പോളിക്ലിനിക്കിൽ നടത്തി.
കളറിംഗ് വഴി മികച്ച മോട്ടോർ കഴിവുകൾ വികസിപ്പിക്കുന്നത് എഴുത്ത് പോലെയുള്ള കൂടുതൽ സങ്കീർണ്ണമായ കഴിവുകൾക്ക് കുട്ടികളെ സജ്ജമാക്കുന്നു. നിറം കൊടുക്കാൻ...
നാവിക മേഖല ഒരു യഥാർത്ഥ ആഗോള സാമ്പത്തിക ശക്തിയാണ്, അത് 150 ബില്യൺ വിപണിയിലേക്ക് നാവിഗേറ്റ് ചെയ്തു...
കഴിഞ്ഞ തിങ്കളാഴ്ച, ഫിനാൻഷ്യൽ ടൈംസ് ഓപ്പൺഎഐയുമായി ഒരു കരാർ പ്രഖ്യാപിച്ചു. FT അതിൻ്റെ ലോകോത്തര പത്രപ്രവർത്തനത്തിന് ലൈസൻസ് നൽകുന്നു…