Laravel 5.1: 如何在隐式控制器中使用中间件?
Laravel 5.1: How to use middleware in an implicit controller?
我想检查身份验证以访问名为 FoodController 的控制器,并且此控制器访问将只允许某些用户,因此我创建了一个中间件并将其分配给 route.php 文件上的隐式控制器路由。但是显示错误-
ErrorException in Router.php line 612:
strpos() expects parameter 1 to be string, array given
代码如下:
Route.php
Route::group(['middleware' => 'auth'],function(){
Route::controller('home','HomeController');
Route::controller('food',['middleware' => 'fm', 'uses' => 'FoodController']);
});
kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'fm' => \App\Http\Middleware\FoodAuthentication::class,
];
FoodAuthentication.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class FoodAuthentication
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::user()->role!=2) {
return redirect('home');
}
return $next($request);
}
}
我该如何解决?
您不能将数组放入 Route::controller。只需添加
public function __construct() {
$this->middleware('fm');
}
给你的食品管理员class
已解决!
您不能直接在隐式控制器中添加中间件。
按照以下 link:
http://arunkp.in/adding-middleware-in-implicit-controllers/
我想检查身份验证以访问名为 FoodController 的控制器,并且此控制器访问将只允许某些用户,因此我创建了一个中间件并将其分配给 route.php 文件上的隐式控制器路由。但是显示错误-
ErrorException in Router.php line 612:
strpos() expects parameter 1 to be string, array given
代码如下:
Route.php
Route::group(['middleware' => 'auth'],function(){
Route::controller('home','HomeController');
Route::controller('food',['middleware' => 'fm', 'uses' => 'FoodController']);
});
kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'fm' => \App\Http\Middleware\FoodAuthentication::class,
];
FoodAuthentication.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class FoodAuthentication
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::user()->role!=2) {
return redirect('home');
}
return $next($request);
}
}
我该如何解决?
您不能将数组放入 Route::controller。只需添加
public function __construct() {
$this->middleware('fm');
}
给你的食品管理员class
已解决! 您不能直接在隐式控制器中添加中间件。 按照以下 link: http://arunkp.in/adding-middleware-in-implicit-controllers/