Laravel 5 Laravel 5中间件

Laravel 5 Laravel 5中间件,laravel-5,laravel-middleware,Laravel 5,Laravel Middleware,您好,我正在使用Laravel 5的中间件,我正在做的是,我有一些控制器正在使用的中间件,我的每个控制器都有自己的配置,我需要通过我的中间件,我如何才能做到这一点?如果您在$Middleware array中的App/Http/Kernel.php中定义的堆栈中使用此中间件,您没有可用的$request->route 但是,如果您在routes.php文件中将其用作单个路由或路由组的中间件,则可以这样做: 根据需要创建一个配置文件,其中的配置项使用每个路由的相同名称命名,然后在中间件中获得路由名

您好,我正在使用Laravel 5的中间件,我正在做的是,我有一些控制器正在使用的中间件,我的每个控制器都有自己的配置,我需要通过我的中间件,我如何才能做到这一点?

如果您在$Middleware array中的App/Http/Kernel.php中定义的堆栈中使用此中间件,您没有可用的$request->route

但是,如果您在routes.php文件中将其用作单个路由或路由组的中间件,则可以这样做:

根据需要创建一个配置文件,其中的配置项使用每个路由的相同名称命名,然后在中间件中获得路由名称并加载适当的配置

抱歉,如果混淆了,请想象以下代码:

Config/permissions.php

顺便说一句,我建议您使用Laracast foruns:

www.laracast.com/display

<?php 

return [
    // Route name here
    'user.index' =>
    // Your route options here
    [
        'option_a' => true,
        'option_b' => false,
    ],
    'user.edit' =>
    [
        'option_a' => true,
        'option_b' => true,
    ],
    /* ... */
];
?>
public function handle($request, Closure $next)
{
    $route = $request->route()->getName();

    /* Check if there is a permission to this route in config file */
    if (\Config::get("permissions.{$route}")) {
        $options = \Config::get("permissions.{$route}");
        /* Here will be your options by route */
        /* Now it's up to you do what you want */

    } else {
        /* If not, use default options */
    }

    return $next($request);
}