cakephp - 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 定义)不再被授权,或者更准确地说,我不知道如何授权它们。
解决方案
正如 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);
});
不确定这是否是推荐的方式,但它似乎有效。
推荐阅读
- javascript - AdonisJS - 如何根据 Antl Provider 的语言环境返回验证消息
- python - 如果与最后一行连续出现,则添加值,否则保持相同的值
- android - dagger.internal.codegen.ComponentProcessor 无法处理此接口,因为并非所有依赖项都可以解决
- python - 有没有办法在 Python 中将列表列表转换为没有其他列表的列表?
- machine-learning - Top-k 和平均平均精度之间的关系是什么?
- java - Conferenceable 中没有可用的默认构造函数
- python - 不断请求输入,直到输入满足多个条件
- c# - 从另一个 MDIChild 表单显示 MDIChild 表单
- python - 如何在tensorflow函数中传递字典数据
- android - 我的第一个安卓应用有什么问题?