Magento 2: Đăng nhập người dùng đôi khi yêu cầu đăng nhập hai lần khi thiết lập nhiều cửa hàng


9

Tôi đang cố gắng thiết lập một cửa hàng đa với giỏ hàng được chia sẻ. Tuy nhiên, đăng nhập người dùng đôi khi không hoạt động.

Hoạt Store Switcherđộng tốt, nhưng frontend User Loginvào thứ 2 và thứ 3 Storeyêu cầu tôi nhấp vào Sign Innút hai lần để đăng nhập.

Tôi đã thiết lập nhiều cửa hàng với các thiết lập này:

Đa miền (Máy chủ ảo)

Tôi đang sử dụng một Website. Trang web sẽ có ba Stores. Các tên miền sẽ chia sẻ một tên miền cơ sở chung. Các cửa hàng bổ sung sẽ sử dụng tên miền phụ .

Tôi đã tạo magento2.com làm tên miền cơ sở mặc định.

Tôi đã tạo store2.magento2.com là cửa hàng thứ 2.

Tôi đã tạo store3.magento2.com là cửa hàng thứ 3.

nhập mô tả hình ảnh ở đây


Danh mục gốc và sản phẩm thử nghiệm

Tôi đã tạo Store2 Root CategoryStore3 Root Category . Tôi cũng đã tạo các danh mục phụ dưới mỗi Danh mục gốc.

nhập mô tả hình ảnh ở đây

Tôi đã thêm một sản phẩm thử nghiệm cho mỗi loại phụ.

nhập mô tả hình ảnh ở đây


Cửa hàng và Lượt xem

Tôi KHÔNG thay đổi bất cứ điều gì trên Cửa hàng trang web chínhChế độ xem cửa hàng mặc định .

Tôi đã tạo Store2Store View 2 cho cửa hàng thứ 2.

Tôi đã tạo Store3Store View 3 cho cửa hàng thứ 3.

nhập mô tả hình ảnh ở đây


Đối với Store2 , tôi đặt Store2Namevà chọn Store2 Root CategoryRoot Category.

nhập mô tả hình ảnh ở đây


Đối với cửa hàng View 2 , tôi đã chọn store2 như Store, sử dụng cửa hàng View 2Name, và bước vào store2 như Store Code.

nhập mô tả hình ảnh ở đây


Lần thứ 3 Store, tôi đặt Store3Namevà chọn Store3 Root CategoryRoot Category.

nhập mô tả hình ảnh ở đây


Đối với Store View 3 , tôi đã chọn Store3Store, sử dụng Store View 3 như Namevà nhập store3 dưới dạng Store Code.

nhập mô tả hình ảnh ở đây


Cài đặt URL và Cookie

Các Configurationmàn hình tại chương trình 5 lựa chọn dưới Store Viewthả xuống:

  1. Default Config
  2. Main Website
  3. Default Store View
  4. Cửa hàng Xem 2
  5. Cửa hàng xem 3

nhập mô tả hình ảnh ở đây

Tôi đã thay đổi cài đặt URL và Cookie cho Default Store View, Store View 2Store View 3 .

Tôi KHÔNG thay đổi cài đặt URL hoặc Cookie cho Default ConfigMain Website.


Đối với Default Store View, tôi đã thay đổi Cookie Path.

nhập mô tả hình ảnh ở đây


Đối với Cửa hàng 2 , tôi đã thay đổi Base URLCookie Path.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Đối với Cửa hàng 3 , tôi đã thay đổi Base URLCookie Path.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


Chia sẻ tài khoản

Để tài khoản người dùng chia sẻ và giỏ mua sắm giữa nhiều cửa hàng, tôi đã thay đổi Share Customer Accountstừ "mỗi trang web" để toàn cầu dưới Default Config.

nhập mô tả hình ảnh ở đây


.htaccess thay đổi

Tôi đã thêm các dòng này ở đầu .htaccesstập tin tại thư mục gốc của dự án.

#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


thay đổi index.php

Sử dụng Store Switcher, đôi khi được yêu cầu nhấp hai lần để chuyển từ store2 / 3 sang mặc định. Để khắc phục điều này, tôi đã phải đặt lại giá trị cho $_COOKIE['store']tại 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);


Đăng nhập người dùng đôi khi yêu cầu nhấp hai lần

Với các thiết lập ở trên, hoạt Store Switcherđộng tốt. Việc mua sắm Cartđược chia sẻ giữa cả 3 Cửa hàng cho cả người dùng đăng nhập và không đăng nhập.

nhập mô tả hình ảnh ở đây

Tuy nhiên, trên Store2Store3 , frontend user loginđôi khi chuyển hướng trở lại cùng một trang đăng nhập. Nếu tôi nhấn Sign Innút trên trang đăng nhập được chuyển hướng (lần thứ 2 để nhấp vào nút này), thì hãy để tôi đăng nhập.

Có cách nào để khắc phục vấn đề này?


Cập nhật: vô hiệu hóa Cache

Tôi đã tắt bộ đệm từ dòng lệnh:

php bin/magento cache:disable

Với bộ nhớ cache bị vô hiệu hóa, user logintrên Store2Store3 trở nên ổn định hơn nhiều. Nó vẫn được chuyển hướng trở lại trang đăng nhập 1 trên 10 lần thử, nhưng thay đổi này đã giúp đăng nhập hoạt động tốt hơn.

Tuy nhiên, toàn bộ trang web trở nên chậm !!!

Có cách nào để cấu hình đúng bộ đệm user loginđể thực hiện chính xác trên nhiều Storethiết lập không?


Xin chào Bạn có thể khắc phục sự cố không ?? Tôi cũng đang đối mặt với vấn đề tương tự trên trang web của tôi. Chi tiết đăng nhập không được chia sẻ giữa các cửa hàng dưới một trang web. Bạn có thể vui lòng chia sẻ giải pháp của mình không
Zammuuz

Câu trả lời:


0

Chúng tôi quản lý để làm cho trình chuyển đổi cửa hàng và đăng nhập ổn định hơn một chút với cấu hình mới.

Thêm mã cửa hàng vào Url

Thay đổi lớn nhất là cài đặt Add Store Code to Urlsthành "Có".

Cửa hàng =>
Cấu hình trong phần Cài đặt =>
select Default Config=>
Web trong phần CHUNG =>
Tùy chọn Url =>
  thay đổi Add Store Code to Urlsthành "Có"

nhập mô tả hình ảnh ở đây

 

Xóa tên miền cookie

Sau đó, chúng tôi đã xóa Cookie Domaingiá trị khỏi Store2Store3 khỏi trang Cấu hình.

Cửa hàng =>
Cấu hình trong phần Cài đặt =>
chọn Store2 hoặc Store3 =>
Web trong phần CHUNG =>
Cài đặt cookie mặc định =>
  xóa giá trị khỏi Cookie Domainvà để trống

nhập mô tả hình ảnh ở đây

 

Xóa mã tùy chỉnh khỏi .htaccessindex.php

Sau đó, chúng tôi loại bỏ các dòng mã tùy chỉnh mẫu .htaccessindex.php.

Với cấu hình mới, việc tùy chỉnh trên các tệp này không còn cần thiết nữa. Điều này là tuyệt vời, mã sạch hơn.

 

Sau những thay đổi này, trình chuyển đổi cửa hàng, giỏ hàng được chia sẻ và đăng nhập của người dùng đã ổn định hơn nhiều. Hãy chắc chắn rằng bạn xóa bộ nhớ cache sau khi bạn thực hiện những thay đổi này.

 

Nâng cấp lõi Magento2 và tác dụng của nó đối với .htaccessindex.php

Trước khi thực hiện thay đổi cấu hình và tệp, chúng tôi đã nâng cấp lõi Magento2 từ 2.1.0 lên 2.1.3 bằng cách sử dụng composer. (Tham khảo: Cập nhật Magento 2.1.2 cho 2.1.3 )

Chúng tôi không chắc chắn đây sẽ là một phần bắt buộc cho cấu hình đa cửa hàng này, nhưng chúng tôi đã thực hiện nó với hy vọng trang web sẽ ổn định hơn với các bản cập nhật mới nhất từ ​​2.1.3

Chúng tôi đã có 3 tệp được sửa đổi, đó là một phần của các tệp lõi và mô-đun (các tệp này bị bỏ qua bởi kiểm soát phiên bản Git của chúng tôi):

  1. .htaccess
  2. index.php
  3. dev / tools / grunt / configs / Themes.js (tệp cấu hình Grunt để biên dịch css chủ đề tùy chỉnh của chúng tôi)

Khi chúng tôi nâng cấp Magento2, các tệp này được đặt lại về trạng thái ban đầu là 2.1.3. Chúng tôi KHÔNG phải dọn dẹp thủ công .htaccessindex.phpcác tập tin của chúng tôi . Nội dung tập tin được tự động thiết lập lại bằng cách nâng cấp. Đây là một tác dụng phụ tích cực.

Nhưng đó cũng là một tác dụng phụ xấu. Mã tùy chỉnh của chúng tôi trong tệp cấu hình Grunt đã được đặt lại và xóa bằng nâng cấp lõi. Chúng tôi phải tự khôi phục các dòng mã tùy chỉnh trên tệp này.

Tôi khuyên bạn nên lấy bản sao lưu tệp và DB trước khi thực hiện nâng cấp lõi này và thay đổi cấu hình / tệp.


Giảm thiểu Javascript có thể giúp

Giảm thiểu JS làm cho toàn bộ trang web ổn định hơn trên trang web của chúng tôi.

Cửa hàng =>
Cấu hình trong phần Cài đặt =>
select Default Config=>
Nhà phát triển trong phần ADVANCED =>
Cài đặt JavaScript =>
  đặt Merge JavaScript Filesthành "Có" =>
  đặt Enable JavaScript Bundlingthành "Có" =>
  đặt Minify JavaScript Filesthành "Có" =>
sau đó, xóa bộ nhớ cache

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.