Magento2:如何检查请求是否来自Web服务?


8

在Magento 1中,我们通常检查如下:

if (Mage::getSingleton('api/server')->getAdapter() != null) {
    // request from Web-Service
}

如何在Magento2中检查相同内容?

我没有找到适合REST和SOAP的合适适配器。


您在寻找观察者吗?
Rakesh Jesadiya

通常,这将从观察员那里检查。
MagePsycho

Answers:


8

我曾经Magento\Framework\App\State::getAreaCode()发现请求是否通过SOAP / REST API发出。

您可以在Magento\Framework\App\Area课堂上检查可能的区号。


1

请检查以下代码,

public function __construct(\Magento\Framework\Event\Observer $observer) {
    $controller = $observer->getControllerAction();
}

$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
    return;
}

但是这里的问题是:网站上也有一些REST API被调用。
MagePsycho

0

我曾经有一个类似的任务,如果我没记错的话,我通过检查是否\Magento\Framework\App\Request\Http::getFullActionName()等于等于做到了__。我不知道为什么,但是对于REST请求,这将是完整的动作名称。

但是,由于当时感觉这不是最正确的解决方案,因此我当时并不认为这是安全的,因此我最终通过严格检查请求字符串来解决问题:

if (
    $this->request->getRequestString() === '/rest/V1/carts/mine/payment-information'
) {
    ...

您可能已经猜到了,在我的情况下,我必须检查当前的REST请求是否是非常特定的请求。

我不了解SOAP,但是我假设您可以使用类似的方法。但是,它仍然感觉不太合适。


是的 这对我没有帮助:(
MagePsycho
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.