首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSRF中间件未被激活

CSRF中间件未被激活
EN

Stack Overflow用户
提问于 2019-04-04 11:52:12
回答 1查看 294关注 0票数 0

这是我拥有的

Cakephp 3.7.2;在我的routes.php

代码语言:javascript
运行
复制
<?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);
    });
});

我在做什么

使用/api/users邮递员发出POST请求。请求通过后,我看到了正确的反应。我想确保我已经为站点的其他部分启用了保护,所以我期待那些丢失的CSRF令牌cookie错误之一。一旦确认,我将取消对API路由异常的评论。

我试过的

  • 遵循控制器/medileware.html#csrf-中间件并将registerMiddleware()调用放入src/Application.php
  • applyMiddleware()电话中加入一些胡言乱语。它抱怨无法找到中间件,这证实了函数确实被调用了。
  • $this->loadComponent('Csrf');放入AppController.php。它起作用了,我得到了丢失的CSRF令牌曲奇。它没有向我展示关于冲突组件的警告,比如此页说它应该

我的印象是中间件没有被正确地启用,但是对我来说不清楚到底是什么错了。请协助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 12:05:45

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

我没有意识到没有中间件的较低的Router::prefix调用会否定上面的Router::scope调用(即充当一个例外),但它做到了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55515336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档