【发布时间】:2016-11-02 14:48:20
【问题描述】:
我正在尝试在资源路由上使用中间件。
我的路线 ->
Route::resource('posts', 'PostController');
我的中间件 ->
$user = Auth::user();
if(Auth::check()) {
if($user->is_admin) {
return $next($request);
} else {
return redirect()->route('home');
}
} else {
return redirect()->route('login');
}
我的控制器构造器 ->
$this->middleware('auth');
$this->middleware('admin')->only('posts.destroy');
我的目标是只让管理员销毁帖子,而不是其他人。
但是当我使用
php artisan route:list,显示的中间件是web,auth。
我在这里做错了什么?
【问题讨论】:
-
你在内核中注册了中间件吗?无论如何,请参阅here
-
@Andrew Ya 添加为
'admin' => \App\Http\Middleware\AdminMiddleware::class, -
为了论证,尝试全局添加中间件,看看它是否命中。就像用路由组包装所有路由并将
die()或其他东西放在中间件本身并访问任何路由。 -
@Andrew 如果我只添加
$this->middleware('admin');它显示在php artisan route:list下但我希望它仅适用于某些路线。有什么解决办法吗? -
我们可以解决一些问题,只是想确保它有效。
标签: php laravel-5 laravel-middleware