【问题标题】:Laravel 5.1: How to use middleware in an implicit controller?Laravel 5.1:如何在隐式控制器中使用中间件?
【发布时间】:2015-11-26 05:53:36
【问题描述】:

我想检查身份验证以访问名为 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);
    }
}

我该如何解决?

【问题讨论】:

    标签: php laravel routing laravel-middleware


    【解决方案1】:

    解决了! 您不能直接在隐式控制器中添加中间件。 请点击以下链接: http://arunkp.in/adding-middleware-in-implicit-controllers/

    【讨论】:

      【解决方案2】:

      您不能将数组放入 Route::controller。只需添加

      public function __construct() {
             $this->middleware('fm');
        }
      

      到你的 FoodController 类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 2015-11-12
        • 2016-04-14
        • 2016-10-19
        • 2016-08-05
        • 2016-03-18
        相关资源
        最近更新 更多