Magento2: Wie überprüfe ich, ob eine Anfrage vom Webdienst stammt?

8

In Magento 1 haben wir Folgendes überprüft:

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

Wie überprüfe ich dasselbe in Magento2?

Ich habe keinen geeigneten Adapter gefunden, der sowohl für REST als auch für SOAP geeignet ist.

MagePsycho
quelle
suchst du einen beobachter
Rakesh Jesadiya
Meistens wird dies von Observer überprüft.
MagePsycho

Antworten:

8

Ich habe immer herausgefunden Magento\Framework\App\State::getAreaCode(), ob eine Anfrage über die SOAP / REST-API kommt.

Sie können die möglichen Vorwahlen in der Magento\Framework\App\AreaKlasse überprüfen .

MagePsycho
quelle
1

Bitte überprüfen Sie mit dem folgenden Code,

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

$isApirequest = $controller->getRequest()->getControllerModule() == 'Mage_Api';
if ($isApirequest) {
    return;
}
Rakesh Jesadiya
quelle
Aber hier ist das Problem: Es gibt einige REST-APIs, die auch von der Website aufgerufen werden.
MagePsycho
0

Ich hatte einmal eine ähnliche Aufgabe, und wenn ich mich richtig erinnere, habe ich dies getan, indem ich überprüft habe, ob sie \Magento\Framework\App\Request\Http::getFullActionName()gleich ist __. Ich weiß nicht warum, aber für REST-Anfragen wäre dies der vollständige Aktionsname.

Allerdings fand ich dies zu diesem Zeitpunkt nicht sicher, da es sich nicht als die richtigste Lösung anfühlte. Daher überprüfte ich die Anforderungszeichenfolge streng:

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

Wie Sie vielleicht erraten haben, musste ich in meiner Situation überprüfen, ob die aktuelle REST-Anfrage eine sehr spezifische war.

Ich weiß nichts über SOAP, aber ich gehe davon aus, dass Sie einen ähnlichen Ansatz verwenden könnten. Es fühlt sich jedoch immer noch nicht ganz nach der richtigen Lösung an.

Giel Berkers
quelle
Ja. Das wird mir nicht helfen :(
MagePsycho