CakePHP 3.6 - 如何让 DebugKit 与授权插件一起工作?

CakePHP 3.6 - How to get DebugKit to work with Authorization plugin?

我有一个启用了 DebugKit (3.16.5) 和授权 (1.0.0) 插件(以及身份验证 1.0.1 插件)的 Cakephp 3.6.13 项目。

DebugKit 栏在开发中不加载,服务器返回:“/debug-kit/toolbar/5b7dae82-9c94-48df-a16b-fbf13bd97045 的请求未应用任何授权检查。”这是有道理的, 但我如何获得对 DebugKit 的请求以通过授权而不影响对网站其余部分的授权?

使用 RequestPolicy example 适用于插件 === DebugKit 请求,但是我的 public 操作(使用 skipAuthorization 定义)不再被授权,或者更准确地说,我不知道如何授权他们。

正如 ndm 所建议的,当请求不是针对 DebugKit 插件时,我有条件地添加了授权中间件。我将其添加到我的 Application.php 中间件函数中:

$auth = new AuthorizationMiddleware($this);
$middlewareQueue
    ->add(function (ServerRequestInterface $request, ResponseInterface $response, callable $next) use ($auth) {
        if ($request->getParam('plugin') !== 'DebugKit') {
            return $auth($request, $response, $next);
        }
        return $next($request, $response);
    });

不确定这是否是推荐的方式,但它似乎有效。

使用 CakePHP 4.1 将以下配置选项添加到 app_local.php 将导致 DebugKit 绕过策略并正常运行:

    'DebugKit' => [
        'ignoreAuthorization' => true
    ],