如何禁用插件的 CSRF?
How to disable CSRF for a plugin?
我开发了一个 CakePHP 3 插件,它必须处理 POST 没有 CSRF 令牌的请求。
在我使用插件的应用程序中,我将中间件应用于根范围。
Router::scope('/', function (RouteBuilder $routes) {
$routes->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true
]));
$routes->applyMiddleware('csrf');
...
如何禁用插件的中间件?
我试过 $this->addPlugin(\My\Plugin::class, ['middleware' => false])
但没用。
或者插件负责禁用 CSRF 中间件?
您可以试试下面的代码:
// In Application::bootstrap()
use ContactManager\Plugin as ContactManagerPlugin;
// Use the disable/enable to configure hooks.
$plugin = new ContactManagerPlugin();
$plugin->disable('middleware');
$this->addPlugin($plugin);
问题是我忘记加载 Application::bootstrap()
中的插件路由。
$this->addPlugin(\My\Plugin::class, ['routes' => true]);
根据 cake book 路由,bootstrap,中间件和控制台挂钩默认情况下被禁用。
我开发了一个 CakePHP 3 插件,它必须处理 POST 没有 CSRF 令牌的请求。
在我使用插件的应用程序中,我将中间件应用于根范围。
Router::scope('/', function (RouteBuilder $routes) {
$routes->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true
]));
$routes->applyMiddleware('csrf');
...
如何禁用插件的中间件?
我试过 $this->addPlugin(\My\Plugin::class, ['middleware' => false])
但没用。
或者插件负责禁用 CSRF 中间件?
您可以试试下面的代码:
// In Application::bootstrap()
use ContactManager\Plugin as ContactManagerPlugin;
// Use the disable/enable to configure hooks.
$plugin = new ContactManagerPlugin();
$plugin->disable('middleware');
$this->addPlugin($plugin);
问题是我忘记加载 Application::bootstrap()
中的插件路由。
$this->addPlugin(\My\Plugin::class, ['routes' => true]);
根据 cake book 路由,bootstrap,中间件和控制台挂钩默认情况下被禁用。