Magento 2: Login pengguna terkadang harus login dua kali pada pengaturan multi store


9

Saya mencoba menyiapkan multi store dengan keranjang bersama. Namun, login pengguna terkadang tidak berfungsi.

The Store Switcherbekerja dengan baik, tetapi frontend User Loginpada 2 dan 3 Storemengharuskan saya untuk mengklik Sign Intombol dua kali untuk login.

Saya memiliki pengaturan multi store dengan pengaturan ini:

Multi Domain (Host Virtual)

Saya menggunakan satu Website. Situs ini akan memiliki tiga Stores. Nama domain akan berbagi satu domain basis umum. Toko tambahan akan menggunakan subdomain .

Saya membuat magento2.com sebagai domain basis default.

Saya membuat store2.magento2.com sebagai toko ke-2.

Saya membuat store3.magento2.com sebagai toko ke-3.

masukkan deskripsi gambar di sini


Kategori Root dan Produk Uji

Saya membuat Kategori Root Store2 dan Kategori Root Store3 . Saya juga membuat sub kategori di bawah setiap Kategori Root.

masukkan deskripsi gambar di sini

Saya menambahkan satu produk uji untuk setiap sub kategori.

masukkan deskripsi gambar di sini


Toko dan Tampilan

Saya TIDAK mengubah apa pun di Toko Situs Web Utama dan Tampilan Toko Default .

Saya membuat Store2 dan Store View 2 untuk toko ke-2.

Saya membuat Store3 dan Store View 3 untuk toko ke-3.

masukkan deskripsi gambar di sini


Untuk Store2 , saya mengatur Store2 sebagai Namedan memilih Kategori Root Store2 sebagai Root Category.

masukkan deskripsi gambar di sini


Untuk Store View 2 , saya memilih Store2 sebagai Store, menggunakan Store View 2 sebagai Name, dan memasukkan store2 sebagai Store Code.

masukkan deskripsi gambar di sini


Untuk tanggal 3 Store, saya menetapkan Store3 sebagai Namedan memilih Kategori Root Store3 sebagai Root Category.

masukkan deskripsi gambar di sini


Untuk Store View 3 , saya memilih Store3 sebagai Store, menggunakan Store View 3 sebagai Name, dan memasukkan store3 sebagai Store Code.

masukkan deskripsi gambar di sini


Pengaturan URL dan Cookie

The ConfigurationLayar sekarang menunjukkan 5 pilihan di bawah Store Viewdrop-down:

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

masukkan deskripsi gambar di sini

Saya mengubah pengaturan URL dan Cookie untuk Default Store View, Tampilan Toko 2 , dan Tampilan Toko 3 .

Saya TIDAK mengubah pengaturan URL atau Cookie untuk Default Configdan Main Website.


Karena Default Store Viewsaya berubah Cookie Path.

masukkan deskripsi gambar di sini


Untuk Tampilan Toko 2 , saya berubah Base URLdan Cookie Path.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


Untuk Tampilan Toko 3 , saya berubah Base URLdan Cookie Path.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


Berbagi Akun

Untuk berbagi akun pengguna dan keranjang belanja di antara beberapa toko, saya mengubah Share Customer Accountsdari "Per Situs Web" menjadi Global di bawah Default Config.

masukkan deskripsi gambar di sini


.htaccess berubah

Saya menambahkan baris ini di bagian atas .htaccessfile di direktori root proyek.

#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


perubahan index.php

Menggunakan Store Switcher, kadang-kadang diperlukan untuk mengklik dua kali untuk beralih dari store2 / 3 ke default. Untuk memperbaikinya, saya harus mereset nilai $_COOKIE['store']di 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);


Login pengguna terkadang harus mengklik dua kali

Dengan pengaturan di atas, Store Switcherberfungsi dengan baik. Belanja Cartdibagi di antara ketiga Toko untuk pengguna yang masuk dan tidak masuk.

masukkan deskripsi gambar di sini

Namun, pada Store2 dan Store3 , frontend user loginterkadang dialihkan kembali ke halaman login yang sama. Jika saya menekan Sign Intombol pada halaman login yang dialihkan (kali ke-2 untuk mengklik tombol ini), mari saya login.

Adakah cara untuk menyelesaikan masalah ini?


Perbarui: nonaktifkan Cache

Saya menonaktifkan caching dari baris perintah:

php bin/magento cache:disable

Dengan cache yang dinonaktifkan, user loginpada Store2 dan Store3 menjadi jauh lebih stabil. Itu masih diarahkan kembali ke halaman login 1 dari 10 upaya, tetapi perubahan ini membuat login berfungsi lebih baik.

Namun, seluruh situs menjadi lambat !!!

Apakah ada cara untuk mengonfigurasi cache dengan benar untuk membuatnya user loginbekerja dengan benar pada multi- Storesetup?


Hai Apakah Anda dapat memperbaiki masalah ini ?? Saya juga menghadapi masalah yang sama di situs saya. Detail login tidak dibagikan di antara toko-toko di bawah satu situs web. Bisakah Anda berbagi solusi Anda
Zammuuz

Jawaban:


0

Kami berhasil membuat pengalih toko dan masuk sedikit lebih stabil dengan konfigurasi baru.

Tambahkan Kode Toko ke Url

Perubahan terbesar adalah pengaturan Add Store Code to Urlske "Ya".

Toko =>
Konfigurasi di bagian Pengaturan =>
pilih Default Config=>
Web di bagian UMUM =>
Url Opsi =>
  ubah Add Store Code to Urlske "Ya"

masukkan deskripsi gambar di sini

 

Hapus Domain Cookie

Kemudian, kami menghapus Cookie Domainnilai dari Store2 dan Store3 dari halaman Konfigurasi.

Toko =>
Konfigurasi di bagian Pengaturan =>
pilih Store2 atau Store3 =>
Web di bagian UMUM =>
Pengaturan Cookie Default =>
  hapus nilai dari Cookie Domaindan biarkan kosong

masukkan deskripsi gambar di sini

 

Hapus kode khusus dari .htaccessdanindex.php

Lalu, kami menghapus bentuk garis kode kustom .htaccessdan index.php.

Dengan konfigurasi baru, penyesuaian pada file-file ini tidak lagi diperlukan. Ini bagus, kode pembersih.

 

Setelah perubahan ini, pengalih toko, keranjang belanja bersama, dan login pengguna menjadi jauh lebih stabil. Pastikan Anda menghapus cache setelah Anda melakukan perubahan ini.

 

Upgrade inti Magento2 dan pengaruhnya terhadap .htaccessdanindex.php

Sebelum membuat perubahan konfigurasi dan file, kami meningkatkan inti Magento2 dari 2.1.0 ke 2.1.3 menggunakan composer. (Referensi: Perbarui Magento 2.1.2 untuk 2.1.3 )

Kami tidak yakin ini akan menjadi bagian yang diperlukan untuk konfigurasi multi-toko ini, tetapi kami melakukannya dengan harapan situs akan lebih stabil dengan pembaruan terbaru dari 2.1.3

Kami memiliki 3 file yang dimodifikasi yang merupakan bagian dari file inti dan modul (file-file ini diabaikan oleh kontrol versi Git kami):

  1. .htaccess
  2. index.php
  3. dev / tools / grunt / configs / themes.js (Grunt file config untuk mengkompilasi css tema khusus kami)

Ketika kami memutakhirkan Magento2, file-file ini diatur ulang ke keadaan awal 2.1.3. Kami TIDAK harus secara manual membersihkan file .htaccessdan kami index.php. Isi file secara otomatis diatur ulang oleh peningkatan. Ini adalah efek samping yang positif.

Tetapi ada juga efek samping yang buruk. Kode khusus kami dalam file konfigurasi Grunt telah direset dan dihapus oleh upgrade inti. Kami harus secara manual mengembalikan baris kode khusus kami pada file ini.

Saya sarankan untuk mengambil cadangan file dan DB sebelum melakukan pemutakhiran inti ini dan perubahan konfigurasi / file.


Meminimalkan Javascript mungkin membantu

Meminimalkan JS membuat seluruh situs lebih stabil di situs kami.

Toko =>
Konfigurasi di bagian Pengaturan =>
pilih Default Config=>
Pengembang di bagian ADVANCED =>
Pengaturan JavaScript =>
  atur Merge JavaScript Fileske "Ya" =>
  atur Enable JavaScript Bundlingke "Ya" =>
  atur Minify JavaScript Fileske "Ya" =>
lalu, bersihkan cache

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.