Magento2.3忽略Action的Csrf验证

阅读导航

最近在开发一个magento支付接口插件,支付平台需要异步地把支付结果POST到magento网站.原来以为很简单的事情,只需要添加一个控制器,接收POST过来的数据,再修改订单状态即可。

在magento1.9 2.1 2.2 都很顺利地实现了。但magento2.3版本,模拟POST操作的时候一直都自动跳转到了首页,发现是Csrf验证不通过问题。

后来查了官方文档,在2.3版本,所有的控制器都默认了Csrf验证。

知道原因解决起来也简单了,官方也给出了方法,方法如下:

控制器继承接口CsrfAwareActionInterface

class Notify extends \Magento\Framework\App\Action\Action implements CsrfAwareActionInterface

实现两个方法 createCsrfValidationExceptionvalidateForCsrf

public function createCsrfValidationException(
    RequestInterface request
): ?InvalidRequestException {
    return null;
}
public function validateForCsrf(RequestInterfacerequest): ?bool
{
    // 直接返回通过
    return true;
}