Laravel 5中间件不起作用

时间:2015-11-28 13:30:09

标签: laravel routes kernel middleware

我的自定义中间件有问题。它不起作用。我已经在Kernel.php中注册了它,只在$ routeMiddleware中注册。这是我的代码:

/**
 * 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

 ];
}

这是我的控制器代码:

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

这是我的自定义中间件代码:

 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);
}

当我注销并输入网址

  

简档/ 21

它显示了ID为21的用户的个人资料。我想用中间件阻止它,但它对我不起作用。

有没有人知道如何做到这一点或错误在哪里?

1 个答案:

答案 0 :(得分:1)

要确保中间件是否被触发,请将die('middleware triggerd');放在中间件的句柄功能中。

我注意到你有function __constructor()而不是function __construct() 这可能是问题所在。

如果确实触发了中间件,但仍然遇到同样的问题,请尝试更换:
if (!$this->auth->check())if (!\Auth::check())

。{
相关问题