如何在Laravel 5的路由中添加多个项目到中间件

我最近开始使用Laravel 5,并且在实现一个不仅授权用户而且还检查权限的系统方面遇到了很多麻烦。

在我在网上挖掘出的所有例子中,我看到两个项目被用作中间件。 例如:

Route::group(['middleware' => ['auth', 'permissions']], function() {
  // protected routes here
  Route::get('admin', 'DashboardController@index');
});

但是,无论我做什么,我都无法得到这个工作。 我只能应用一个项目作为中间件,例如:

Route::group(['middleware' => 'auth'], function() {
  // protected routes here
  Route::get('admin', 'DashboardController@index');
});

如果我应用两个,我会收到错误“Route [admin] not defined。”

我尝试了所有我能想到的事情,而我正在将我的头撞在一堵砖墙上。 我怎样才能将两件或两件以上的中间件应用于一条路线?


你可能试图创建一个中间件而不是验证?

在你的Kernel.php中,你可能有这样的东西:

protected $routeMiddleware = [
    'auth' => 'YourRouteAuthenticate',
    'auth.permissions' => 'YourRouteAuthenticateWithPermissions'
    'permissions' => 'YourRouteRedirectIfNoPermissions'
]

我认为你在括号中有错误。 你的代码应该如下所示:

Route::group(['middleware' => ['auth', 'permissions'], function() {
     // protected routes here
     Route::get('admin', 'DashboardController@index');
}]);

检查右括号...


我在回答我自己的问题,因为很多人错过了提到解决方案的评论。

问题出现在权限中间件中,正如lukasgeiter所做的评论中所述。

正如我在回复中看到的,答案在权限中间件中找到,其中使用的是:

return redirect()->route('admin'); 

代替:

redirect('admin'); 

实际上我的routes.php文件中的代码没有错。

链接地址: http://www.djcxy.com/p/83995.html

上一篇: How to Add More than One Item to Middleware on Route in Laravel 5

下一篇: Closing a modal by clicking outside of the modal