magento - 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;
}
但是登录不起作用,任何人都可以帮助我解决这个问题。提前致谢
解决方案
如果您想为所有多商店拥有一个帐户,您必须执行以下操作:
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 网站。
推荐阅读
- python - python视频流跳帧
- c# - 如何在 oracle 的 where 子句中使用特殊字符 '_'
- botframework - 如何使用适配器实例化 turnContext 并将请求作为参数
- javascript - React this is undefined with already bound method
- dart - 谁应该被认为是 pubspec.yaml 中的作者?
- mysql - mysql将数据加载到多个表中并循环
- linux - linux下从串口读取时的杂散传输(ttyUSB..)
- java - 无法从字符串反序列化“java.util.Date”类型的值
- c# - 旁加载的 UWP 应用正在启动之前由其他用户安装的旧版应用
- excel - VBA大于函数实际上显示小于答案