我有一个如下的中间件:
<?php
namespace App\Http\Middleware;
use App\Contracts\PermissionsHandlerInterface;
use Closure;
class PermissionsHanlderMiddleware {
public $permissionsHandler;
function __construct(PermissionsHandlerInterface $permissionsHandler) {
$this -> permissionsHandler = $permissionsHandler;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
$routeAction = $request->route()->getActionName();
/*
do some operations
*/
return $next($request);
}
}
但是$request->route()
始终返回null
,我认为这是因为路由器还没有使用请求进行分派。
注意: 我将我的中间件添加到Kernal.php
全局中间件中,在每个请求之前运行,如下所示:
protected $middleware = [
.
.
.
'App\Http\Middleware\PermissionsHanlderMiddleware',
];
在执行$next($request)
之前,我想获取路由动作名称以执行一些权限操作。如何做到这一点?
actionName
,因为我将其传递给Doctrine SimpleAnnotationReader以获取一些注释,所以$request->segments()
对我没有帮助。是否有其他方法可以在所有请求中执行我的中间件以检查权限? - Mohamed Nagy