> Create Middleware
Middleware provides a convenient mechanism for filtering HTTP requests entering your application. For example, Laravel includes a middleware that verifies the user of your application is authenticated. If the user is not authenticated, the middleware will redirect the user to the login screen. However, if the user is authenticated, the middleware will allow the request to proceed further into the application.
To create a new middleware, use the make:middleware Artisan command:
php artisan make:middleware NameOfMiddlwere
After we create a new middleware, we can put our condition inside its method:
For example, a user wants to access his profile, so we need to check if he is login or not, for that we use middleware.
we create a method check if $_SESSION['is_login'] = true;
namespace App\Http\Middleware;
use Closure;
class CheckLogin
{
public function handle($request, Closure $next)
{
if (isset($_SESSION['is_login']) {
if ($_SESSION['is_login'] == false) {
return redirect('/');
}
}
return $next($request);
}
}
As we see, we get the request and check if the user login or not, if he not we redirect him into the home page, otherwise, we allow him to access his profile. (we use a callback function 'closure' )
> Assigning Middleware To Routes
if we want to assign middleware to a specific route, First we should assign the middleware a key in our app/Http/Kernel.php file.
then we can use our middleware like this:
Route::get('admin/profile', function () {
//
})->middleware('theKey');
> Middleware Parameters
Let's imagine that before we allow any user to access a specific route, we need to check if he's an Admin first.
public function handle($request, Closure $next, $type)
{
if (isset($_SESSION['user_type'])) {
if ($_SESSION['user_type'] == $type) {
//Redirect...
}
}
return $next($request);
}
And we can put the parameter like this...
Route::get('admin/profile', function () {
//
})->middleware('theKey:Admin');
Top comments (2)
I highly recommend to use the built-in
app/Http/Middleware/Authenticate.php
andapp/Http/Middleware/RedirectIfAuthenticated.php
insteadMore detail here: laravel.com/docs/8.x/authenticatio...
thank you, absolutely I will give it a try.