Search code examples
laravelrouteskernelmiddleware

Laravel 5 Middleware Doesn't work


I have problem with my custom middleware. It doesn't work. I have registered it in Kernel.php, only in $routeMiddleware. Here is my code:

/**
 * The application's route middleware.
 *
 * @var array
 */
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'test' => \App\Http\Middleware\TestMiddleware::class

 ];
}

Here is my Controller Code:

/**
 * Middleware Activated
 */
public function __constructor()
{
    $this->middleware('test');
}

and here is my custom middleware code:

 protected $auth;
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if (!$this->auth->check())
    {
       return redirect('/');
    }
    return $next($request);
}

When I'm logout and type in url

profile/21

it shows me the profile of user with id 21. I want to prevent that with middleware but it won't work for me.

Does anyone have an idea how to do that or where is the mistake?


Solution

  • To make sure if the middleware gets triggered put something like die('middleware triggerd'); inside the handle function of the middleware.

    I noticed you have function __constructor() instead of function __construct().
    That might be the problem.

    If it does trigger the middleware but you still have the same problem try replacing:
    if (!$this->auth->check()) with if (!\Auth::check())