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.


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 .


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;
}

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.


Ja. Das wird mir nicht helfen :(
MagePsycho
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.