首页 > 解决方案 > CakePHP 3.6 - 如何让 DebugKit 与授权插件一起工作?

问题描述

我有一个启用了 DebugKit (3.16.5) 和 Authorization (1.0.0) 插件(和 Authentication 1.0.1 插件)的 Cakephp 3.6.13 项目。

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

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

标签: cakephpcakephp-3.0

解决方案


正如 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);
    });

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


推荐阅读