Authentication ';auth';具有Route::resource的中间件
如何将中间件与资源一起使用Authentication ';auth';具有Route::resource的中间件,authentication,laravel,laravel-4,middleware,Authentication,Laravel,Laravel 4,Middleware,如何将中间件与资源一起使用 Route::resource('myitem', ['middleware' => 'auth', 'uses' => 'App\\Controllers\\MyitemsController']); 刚刚跟进,但不幸无法解决 获取错误: ErrorException (E_UNKNOWN) Array to string conversion Open: /vendor/laravel/framework/src/Illuminate/Routin
Route::resource('myitem', ['middleware' => 'auth', 'uses' => 'App\\Controllers\\MyitemsController']);
刚刚跟进,但不幸无法解决
获取错误:
ErrorException (E_UNKNOWN)
Array to string conversion
Open: /vendor/laravel/framework/src/Illuminate/Routing/Router.php
protected function getResourceAction($resource, $controller, $method, $options)
{
$name = $this->getResourceName($resource, $method, $options);
return array('as' => $name, 'uses' => $controller.'@'.$method);
}
中间件是Laravel 5的一个新特性。在Laravel 4中,过滤类似的内容。因此,您不应该使用键
中间件
,而应该在之前或之后使用。另外,这也是错误的来源,Route::resource
的第二个参数应该是控制器名称,作为字符串,第三个参数是选项数组:
Route::resource('myitem', 'App\\Controllers\\MyitemsController', ['before' => 'auth']);
编辑
显然,以前的过滤器只在您将一个组环绕在其周围时才对资源路由起作用。有关示例,请参见OPs答案 对资源使用筛选器不起作用,这就是为什么必须使用Route::group
Route::group(array('before' => 'auth'), function()
{
Route::resource('myitem', 'App\\Controllers\\MyitemsController');
});
我刚刚遇到了这个问题,发现最简单的方法是直接将中间件添加到控制器中
我在这里找到了答案:
如何在Laravel 5中执行此操作。你一直在等待的答案
使用中间件
而不是之前的
Route::group(array('middleware' => 'auth'), function()
{
Route::resource('user', 'UserController',
['only' => ['edit']]);
}
要检查路线是否已设置,请运行:
php工匠路线:列表
其中应显示以下内容:
GET | HEAD | user/{user}/edit | user.edit | App\Http\Controllers\UserController@edit|认证
注意auth
而不是guest
更好的解决方案
使用中间件,而不是以前
Route::group(['middleware' => 'auth'], function(){
Route::resource('myitem', 'MyitemsController');
});
您可以检查以下各项是否正常:
php artisan route:list您使用的是Laravel 4还是5?因为标签上写着4,但中间件是在Laravel5中引入的…我使用的是Laravel4。你确定这是laravel5中的一个功能吗?这是一个非常有用的问题。我刚开始学习Laravel5,文档并不总是清晰的。我明白了。从那时起,必须使用laravel 4进行明确搜索,因为laravel 5现在是公开的。对不起,我必须使用路线::group@SazzadTusharKhan我同意。使用Route:group是我能找到的唯一解决方案。我认为这更接近最佳答案。我无法获得Route:resource作为第二个参数,后跟一个数组,与控制器一起工作。将我所有受保护的路由放在一个组中是有效的。
Route::group(['middleware' => 'auth'], function(){
Route::resource('myitem', 'MyitemsController');
});