Laravel 5 中间件不工作
Laravel 5 Middleware Doesn't work
我的自定义中间件有问题。它不起作用。我在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);
}
当我注销并输入 url
profile/21
它向我显示了 ID 为 21 的用户的个人资料。我想用中间件来防止这种情况发生,但它对我不起作用。
有没有人知道如何做到这一点或错误在哪里?
要确保中间件是否被触发,请将类似 die('middleware triggerd');
的内容放入中间件的句柄函数中。
我注意到你有 function __constructor()
而不是 function __construct()
。
这可能是问题所在。
如果它确实触发了中间件,但您仍然遇到同样的问题,请尝试更换:
if (!$this->auth->check())
和 if (!\Auth::check())
我的自定义中间件有问题。它不起作用。我在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);
}
当我注销并输入 url
profile/21
它向我显示了 ID 为 21 的用户的个人资料。我想用中间件来防止这种情况发生,但它对我不起作用。
有没有人知道如何做到这一点或错误在哪里?
要确保中间件是否被触发,请将类似 die('middleware triggerd');
的内容放入中间件的句柄函数中。
我注意到你有 function __constructor()
而不是 function __construct()
。
这可能是问题所在。
如果它确实触发了中间件,但您仍然遇到同样的问题,请尝试更换:
if (!$this->auth->check())
和 if (!\Auth::check())