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(RequestInterface $request): ?bool
{
    // 直接返回通过
    return true;
}

评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>