簡體   English   中英

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');
  }

到您的FoodController類

解決! 您不能直接在隱式控制器中添加中間件。 請點擊以下鏈接: http : //arunkp.in/adding-middleware-in-implicit-controllers/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM