首页 > 解决方案 > Magento2 在多个网站上仅共享用户登录

问题描述

我正在尝试在多网站中为一组网站实现通用登录。假设我们有一个网站,它有多种货币,每个网站都有不同的付款、价格和库存。

示例:uae.abc.com, in.abc.com, uk.abc.com 所有网站都应该属于 abc.com 网站组应该有共同的登录,类似的是 xyz.com 网站。

如果我们尝试将客户范围用作全局,那么一旦用户注册用户可以登录到所有站点,无论是否分组,尝试使用以下代码修复使用客户范围作为网站访问同一组。

我已经覆盖了Magento\Customer\Model\Config\Share

public function isWebsiteScope()
    {
        if(in_array($this->_storeManager->getStore()->getId(), [1,2,3,4])) {
            return 0;
        }

if(in_array($this->_storeManager->getStore()->getId(), [5,6,7,8])) {
            return 0;
        }

        return $this->_config->getValue(
            self::XML_PATH_CUSTOMER_ACCOUNT_SHARE,
            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
        ) == self::SHARE_WEBSITE;
    }

但是登录不起作用,任何人都可以帮助我解决这个问题。提前致谢

标签: magentomagento2

解决方案


如果您想为所有多商店拥有一个帐户,您必须执行以下操作:

1 共享客户账户

您可以在此处配置此功能:系统 -> 配置 -> 客户配置 -> 共享客户帐户。

  1. 在 Magento 网站之间共享会话。

有 3 种可能的商店配置:

如果您的网站位于一个域中,但位于不同的目录中,例如“www.example.com/stores/store1”和“www.example.com/stores/store2”,您可以将“Cookie 路径”设置为“/stores” /" 在系统 -> 配置 -> Web -> 会话 Cookie 管理中。

如果您的网站位于不同的子域中,例如“store1.example.com”和“store2.example.com”,您可以在系统 -> 配置 -> Web -> 中将“Cookie 域”设置为“.example.com”会话 Cookie 管理。

如果您有不同的域,在这种情况下,您可以将会话 ID 添加到另一个商店的 URL。使用这种构造“Mage::getModel('core/url')->addSessionParam()->getUrl('...')”来获取带有会话参数的 URL。

之后,您的客户将能够在多个商店 Magento 网站之间切换,而无需重新登录。换句话说,如果客户将登录一个 Magento 网站,他将能够使用他的第一个商店帐户查看另一个多商店 Magento 网站。


推荐阅读