如何要求中间件与中间件?

时间:2015-07-22 02:48:57

标签: php laravel authentication laravel-5 middleware

我创建了一个中间件,让我们说AuthenticateAdmin,在Kernel.php中我添加了代码:

'auth_admin' => \App\Http\Middleware\AuthenticateAdmin::class,

在我的路线中,我有这段代码:

Route::group(['middleware' => 'auth_admin'], function () {
    // Admin routes here
});

在我的AuthenticateAdmin.php中,我有这段代码"

<?php namespace App\Http\Middleware;

use Auth;
use Closure;
use Illuminate\Contracts\Auth\Guard;

class AuthenticateAdmin {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // Perform action here

        return $next($request);
    }

}

我想要做的是每次使用中间件&#39; auth_admin&#39;,然后进入&#39; auth_admin&#39;中间件,我希望它能够执行&#39; auth&#39;中间件首先。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用依赖注入,在构造函数中,您应该放置auth中间件,然后执行auth_admin

的操作
<?php

namespace App\Http\Middleware;

use Auth;
use Closure;
use Illuminate\Contracts\Auth\Guard;

class AuthenticateAdmin {
    /**
     * Create a new authentication controller instance.
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // Perform action here

        return $next($request);
    }

}

还有一件事,请记住遵循PSR-2标准,将命名空间放在下一行,就像我在示例中所做的那样。

答案 1 :(得分:0)

我不确定你为什么要那样做。但是在Laravel中,我认为你可以像下面这样配置以使其工作:

function(x) { // x = 1
    return function() { 
        console.log(x); // x = 1
    }; 
}(1)