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

rhfm7lfc  于 2022-11-12  发布在  PHP
关注(0)|答案(2)|浏览(169)

我有一个启用了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 example可以处理plugin === DebugKit请求,但是我的公共操作(用skipAuthorization定义)不再被授权,或者更准确地说,我不知道如何授权它们。

zphenhs4

zphenhs41#

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

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

nwnhqdif2#

正如ndm所建议的,当请求不是DebugKit插件时,我有条件地添加了授权中间件。

$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);
    });

不确定这是不是推荐的方式,但看起来很有效。

相关问题