【问题标题】:How to disable CSRF for a plugin?如何为插件禁用 CSRF?
【发布时间】:2020-05-21 09:30:35
【问题描述】:

我开发了一个 CakePHP 3 插件,它必须在没有 CSRF 令牌的情况下处理 POST 请求。

在我使用插件的应用程序中,我将中间件应用于根范围。

Router::scope('/', function (RouteBuilder $routes) {
    $routes->registerMiddleware('csrf', new CsrfProtectionMiddleware([
        'httpOnly' => true
    ]));

    $routes->applyMiddleware('csrf');
...

如何禁用插件的中间件?

我试过$this->addPlugin(\My\Plugin::class, ['middleware' => false]),但没用。

或者插件负责禁用 CSRF 中间件?

【问题讨论】:

  • 在哪里如何为插件注册路由?

标签: cakephp cakephp-3.x


【解决方案1】:

你可以试试下面的代码:

// In Application::bootstrap()
use ContactManager\Plugin as ContactManagerPlugin;

// Use the disable/enable to configure hooks.
$plugin = new ContactManagerPlugin();

$plugin->disable('middleware');
$this->addPlugin($plugin);

【讨论】:

  • 这个方案有问题吗?
【解决方案2】:

问题是我忘记在Application::bootstrap() 中加载插件路由。

$this->addPlugin(\My\Plugin::class, ['routes' => true]);

根据cake book 路由,引导程序、中间件和控制台挂钩默认禁用。

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多