La chiave del modulo frontend viene sovrascritta


11

Attualmente sto riscontrando problemi con i moduli frontend in cui le chiavi del modulo vengono in qualche modo sovrascritte e vengono visualizzate chiavi del modulo errate. Attualmente sto eseguendo il debug di questo problema nel modulo di accesso del cliente.

Questa è un'istantanea del codice su login.phtml, che ho impostato per vedere qual è il valore del formkey.

  <?php
      $retrievedKey =  $block->getBlockHtml('formkey');
      echo $retrievedKey ;
      // i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'.
  ?>

ok quindi ora dopo che ho continuato l'esecuzione del codice, la pagina viene visualizzata correttamente.

E ora vado a controllare l'input nascosto della chiave del modulo sul mio browser Chrome, tuttavia, stampa una chiave del modulo totalmente diversa da " KeyA ". Chiamiamo questa nuova chiave del modulo ' KeyB '.

Ora provo a fare il login e invio il modulo. Ho ispezionato la richiesta che viene inviata e in effetti passa una variabile chiave di valore di valore che riflette "KeyB".

Ho inserito alcuni punti di interruzione nella funzione ' validate ' di

Magento \ Framework \ Data \ Form \ formkey \ Validator


Questo è il mio comparatore. A destra, $ formKey e $ a dovrebbero corrispondere. Tuttavia, non lo fa.

 $formKey = $request->getParam('form_key', null); // outputs 'KeyB'
 $a = $this->_formKey->getFormKey(); // outputs 'KeyA'


Pertanto, la convalida non riesce e mi reindirizza alla pagina di accesso senza alcun messaggio di errore .

Cose da notare:

  1. Questo comportamento si presenta solo in Chrome e Microsoft EDGE.
  2. Firefox funziona bene, non si verifica alcuna sovrascrittura
  3. La chiave del modulo che viene stampata sembra cambiare ad ogni aggiornamento. $ retrievedKey non si aggiorna ogni volta però

Cose che ho provato:

  1. setup: upgrade e setup: static-content: deploy
  2. cancellato var / cache e var / generation
  3. svuotare la cache del browser e la modalità di navigazione in incognito

Non riesco proprio a capire perché il form-key viene sovrascritto?

Qualsiasi aiuto o suggerimento sul perché questo accada sarebbe fantastico. Grazie per aver letto

Aggiornamento: ho fatto un po 'di debug e ho pensato che il problema fosse causato da page-cache.js impostando di nuovo la chiave del modulo. Ciò è dovuto al fatto che controlla i miei cookie se è impostato un cookie "form_key", in caso contrario, crea una nuova chiave del modulo e salva nei cookie. Il problema è che non è in grado di salvare il cookie, ecco perché continua a creare nuove chiavi del modulo.

Aggiornamento: ho risolto il problema. Ciò è dovuto a problemi di dominio dei cookie. Grazie


Grazie mille per aver documentato una correzione. Ho trascorso un po 'di tempo a eseguire il debug del problema vedendo lo stesso comportamento - la chiave del modulo viene generata più e più volte sul front-end
Paras Sood il

1
Nel mio caso era la cache di sistema di Magento, poiché veniva migrata da un ambiente di gestione temporanea. Store -> Impostazioni -> Confguration -> Sistema -> Cache a pagina intera -> Applicazione cache: imposta su Cache incorporata (se non sei sicuro che la vernice sia attiva o meno).
Miguel Felipe Guillen Calo,

Avere lo stesso identico problema ed esaminare anche le chiavi del modulo in fase di convalida. Hai detto che ciò era dovuto a problemi con il dominio dei cookie, puoi condividere come lo hai risolto? Grazie
Long MK Nguyễn,

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.