如何使用中间件要求中间件?
Posted
技术标签:
【中文标题】如何使用中间件要求中间件?【英文标题】:How to require middleware with a middleware? 【发布时间】:2015-10-11 17:34:31 【问题描述】:我创建了一个中间件,比如说 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);
我想做的是每次我使用中间件“auth_admin”时,在进入“auth_admin”中间件之前,我希望它首先执行“auth”中间件。
【问题讨论】:
【参考方案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 标准,将命名空间放在下一行,就像我在示例中所做的那样。
【讨论】:
【参考方案2】:我不确定您为什么需要这样做。但在 Laravel 中,我认为您可以进行如下配置以使其正常工作:
Route::group(['middleware' => ['auth','auth_admin']], function ()
// Admin routes here
);
【讨论】:
以上是关于如何使用中间件要求中间件?的主要内容,如果未能解决你的问题,请参考以下文章
我怎么忽略了身份框架魔法,只是使用OWIN验证的中间件,以获得要求我寻求什么呢?
带有 IntputLabel 和 Input 的 Material UI 网格放置在水平行中:如何要求垂直对齐位于标签的中间?