Magento 2: il login utente a volte richiede il login due volte nella configurazione multi store


9

Sto cercando di configurare un multi store con carrello condiviso. Tuttavia, l'accesso dell'utente a volte non funziona.

Il Store Switcherfunziona bene, ma il frontend User Loginil 2 e 3 Storemi obbliga a fare clic sul Sign Intasto due volte per login.

Ho impostato più negozi con queste impostazioni:

Multi dominio (host virtuali)

Ne sto usando uno Website. Il sito ne avrà tre Stores. I nomi di dominio condivideranno un dominio di base comune. I negozi aggiuntivi utilizzeranno i sottodomini .

Ho creato magento2.com come dominio di base predefinito.

Ho creato store2.magento2.com come secondo negozio.

Ho creato store3.magento2.com come terzo negozio.

inserisci qui la descrizione dell'immagine


Categorie di root e prodotti di test

Ho creato la Categoria radice Store2 e la Categoria radice Store3 . Ho anche creato sottocategorie in ogni categoria principale.

inserisci qui la descrizione dell'immagine

Ho aggiunto un prodotto di prova per ogni sottocategoria.

inserisci qui la descrizione dell'immagine


Negozi e viste

Non ho modificato nulla nel negozio principale del sito Web e nella vista predefinita del negozio .

Ho creato Store2 e Store View 2 per il 2o negozio.

Ho creato Store3 e Store View 3 per il 3 ° negozio.

inserisci qui la descrizione dell'immagine


Per Store2 , ho impostato Store2 come Namee selezionato Categoria radice Store2 come Root Category.

inserisci qui la descrizione dell'immagine


Per Store View 2 , ho selezionato Store2 come , ho Storeutilizzato Store View 2 come Namee ho inserito store2 come Store Code.

inserisci qui la descrizione dell'immagine


Per il terzo Store, ho impostato Store3 come Namee selezionato Categoria radice Store3 come Root Category.

inserisci qui la descrizione dell'immagine


Per Store View 3 , ho selezionato Store3 come , ho Storeutilizzato Store View 3 come Namee ho inserito store3 come Store Code.

inserisci qui la descrizione dell'immagine


Impostazione URL e cookie

La Configurationschermata ora mostra 5 opzioni nel Store Viewmenu a discesa:

  1. Default Config
  2. Main Website
  3. Default Store View
  4. Store View 2
  5. Store View 3

inserisci qui la descrizione dell'immagine

Ho modificato le impostazioni di URL e cookie per Default Store View, Store View 2 e Store View 3 .

Non ho modificato le impostazioni di URL o Cookie per Default Confige Main Website.


Per Default Store View, ho cambiato Cookie Path.

inserisci qui la descrizione dell'immagine


Per Store View 2 , ho cambiato Base URLe Cookie Path.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Per Store View 3 , ho cambiato Base URLe Cookie Path.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Condivisione dell'account

Per condividere account utente e carrello tra più negozi, sono passato Share Customer Accountsda "Per sito Web" a Globale sotto Default Config.

inserisci qui la descrizione dell'immagine


.htaccess change

Ho aggiunto queste righe all'inizio del .htaccessfile nella directory principale del progetto.

#Multi store setting
SetEnvIf Host magento2.com MAGE_RUN_CODE=default
SetEnvIf Host magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^magento2.com MAGE_RUN_CODE=default
SetEnvIf Host ^magento2.com MAGE_RUN_TYPE=store

SetEnvIf Host store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host ^store2.magento2.com MAGE_RUN_TYPE=store

SetEnvIf Host store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host store3.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host ^store3.magento2.com MAGE_RUN_TYPE=store


cambio index.php

Usando Store Switcher, a volte è necessario fare doppio clic per passare da store2 / 3 a quello predefinito. Per risolvere questo problema, ho dovuto reimpostare il valore $_COOKIE['store']su index.php:

<?php
/**
 * Application entry point
 *
 * Example - run a particular store or website:
 * --------------------------------------------
 * require __DIR__ . '/app/bootstrap.php';
 * $params = $_SERVER;
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
 * $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
 * \/** @var \Magento\Framework\App\Http $app *\/
 * $app = $bootstrap->createApplication('Magento\Framework\App\Http');
 * $bootstrap->run($app);
 * --------------------------------------------
 *
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

try {
    require __DIR__ . '/app/bootstrap.php';
} catch (\Exception $e) {
    echo <<<HTML
<div style="font:12px/1.35em arial, helvetica, sans-serif;">
    <div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;">
        <h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;">
        Autoload error</h3>
    </div>
    <p>{$e->getMessage()}</p>
</div>
HTML;
    exit(1);
}

// Fix store switcher bug on switching to the default store
if ( isset($_SERVER['MAGE_RUN_TYPE']) == 'store' && isset($_SERVER['MAGE_RUN_CODE']) ) {
    if ( !empty($_SERVER['MAGE_RUN_CODE']) ) {
        $_COOKIE['store'] = $_SERVER['MAGE_RUN_CODE'];
    }
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);


L'accesso dell'utente a volte richiede di fare doppio clic

Con la configurazione sopra, Store Switcherfunziona correttamente. Lo shopping Cartè condiviso tra tutti e 3 i negozi sia per gli utenti che hanno effettuato il login.

inserisci qui la descrizione dell'immagine

Tuttavia, su Store2 e Store3 , il frontend a user loginvolte reindirizza alla stessa pagina di accesso. Se premo il Sign Inpulsante sulla pagina di accesso reindirizzata (seconda volta per fare clic su questo pulsante), mi permetto di accedere.

C'è un modo per risolvere questo problema?


Aggiornamento: disabilitazione Cache

Ho disabilitato la memorizzazione nella cache dalla riga di comando:

php bin/magento cache:disable

Con la cache disabilitata, user loginsu Store2 e Store3 sono diventati molto più stabili. Reindirizzava ancora alla pagina di accesso 1 su 10 tentativi, ma questa modifica ha permesso al login di funzionare meglio.

Tuttavia, l'intero sito è diventato lento !!!

Esiste un modo per configurare correttamente la cache in modo user loginche funzioni correttamente su una Storeconfigurazione multipla ?


Ciao Hai saputo risolvere il problema ?? Sto anche affrontando lo stesso problema sul mio sito. I dettagli di accesso non sono condivisi tra i negozi in un unico sito Web. Potete per favore condividere la vostra soluzione
Zammuuz,

Risposte:


0

Siamo riusciti a rendere lo switcher del negozio e il login un po 'più stabili con la nuova configurazione.

Aggiungi il codice negozio agli URL

Il cambiamento più grande è stato impostato Add Store Code to Urlssu "Sì".

Stores =>
Configurazione nella sezione Impostazioni =>
seleziona Default Config=>
Web nella sezione GENERALE =>
Opzioni URL =>
  cambia Add Store Code to Urlsin "Sì"

inserisci qui la descrizione dell'immagine

 

Rimuovi dominio dei cookie

Quindi, abbiamo rimosso il Cookie Domainvalore da Store2 e Store3 dalla pagina di configurazione.

Stores =>
Configurazione nella sezione Impostazioni =>
seleziona Store2 o Store3 =>
Web nella sezione GENERAL =>
Impostazioni predefinite dei cookie =>
  rimuovi il valore Cookie Domaine lascialo vuoto

inserisci qui la descrizione dell'immagine

 

Rimuovere i codici personalizzati da .htaccesseindex.php

Quindi, abbiamo rimosso il modulo delle righe di codice personalizzato .htaccesse index.php.

Con la nuova configurazione, la personalizzazione di questi file non era più necessaria. Questo è un codice fantastico e più pulito.

 

Dopo queste modifiche, il commutatore del negozio, il carrello della spesa condiviso e l'accesso utente sono diventati molto più stabili. Assicurati di svuotare la cache dopo aver apportato queste modifiche.

 

Aggiornamento di base di Magento2 e relativo effetto su .htaccesseindex.php

Prima di apportare modifiche alla configurazione e ai file, abbiamo aggiornato il core Magento2 da 2.1.0 a 2.1.3 usando composer. (Riferimento: aggiornamento Magento 2.1.2 per 2.1.3 )

Non siamo sicuri che questa sarà una parte richiesta per questa configurazione multi store, ma l'abbiamo eseguita sperando che il sito sia più stabile con gli ultimi aggiornamenti dalla 2.1.3

Abbiamo modificato 3 file che facevano parte dei file core e module (questi file sono ignorati dal nostro controllo versione Git):

  1. .htaccess
  2. index.php
  3. dev / tools / grunt / configs / themes.js (file di configurazione di Grunt per compilare il nostro css tema personalizzato)

Quando abbiamo aggiornato Magento2, questi file vengono ripristinati allo stato iniziale di 2.1.3. Non abbiamo dovuto pulire manualmente le nostre .htaccesse index.phpdei file. Il contenuto del file è stato ripristinato automaticamente dall'aggiornamento. Questo è stato un effetto collaterale positivo.

Ma c'era anche un brutto effetto collaterale. Il nostro codice personalizzato nel file di configurazione Grunt è stato ripristinato e cancellato dall'aggiornamento principale. Abbiamo dovuto ripristinare manualmente le nostre righe di codice personalizzate su questo file.

Consiglio di eseguire backup di file e DB prima di eseguire questo aggiornamento di base e le modifiche di configurazione / file.


La minimizzazione di Javascript potrebbe essere d'aiuto

La minimizzazione di JS ha reso l'intero sito più stabile sul nostro sito.

Stores =>
Configurazione nella sezione Impostazioni =>
seleziona Default Config=>
Sviluppatore nella sezione AVANZATO =>
Impostazioni JavaScript =>
  imposta Merge JavaScript Filessu "Sì" =>
  imposta Enable JavaScript Bundlingsu "Sì" =>
  imposta Minify JavaScript Filessu "Sì" =>
quindi cancella la cache

inserisci qui la descrizione dell'immagine

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.