CSRF 中间件没有被激活

CSRF middleware doesn't get activated

这是我的

Cakephp 3.7.2;在我的 routes.php:

<?php

use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
use Cake\Routing\Route\DashedRoute;
use Cake\Http\Middleware\CsrfProtectionMiddleware;

Router::defaultRouteClass(DashedRoute::class);

Router::scope('/', function (RouteBuilder $routes) {
    $routes->registerMiddleware('csrf', new CsrfProtectionMiddleware());
    $routes->applyMiddleware('csrf');
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
    $routes->fallbacks(DashedRoute::class);
});
/*
Router::scope('/api', function ($routes) {
  // connect routes with *no* CSRF protection as that middleware is not active
  // for this routing scope.
});
*/
Router::prefix('api', function ($routes) {
    $routes->prefix('users', function ($routes) {
        $routes->fallbacks(DashedRoute::class);
    });
});

我在做什么

使用 Postman/api/users 发出 POST 请求。请求通过,我看到了正确的响应。我想确保为网站的其余部分启用了保护,所以我期待其中一个 Missing CSRF token cookie 错误。一旦确认,我将取消注释 API 路由异常。

我试过的

我的印象是中间件没有正确启用,但我不清楚究竟是哪里出了问题。请协助

事实证明这实际上是正确的设置。

我没有意识到没有中间件的较低 Router::prefix 调用会否定上面的 Router::scope 调用(即作为例外),但它确实如此。