如何解决 shopify public 应用会话冲突
How to resolve shopify public app session conflicts
我使用节点 js 在 shopify 中创建了一个简单的嵌入式 public 应用程序用于测试目的。它工作正常。
而我在同一浏览器的不同选项卡中打开了两家商店。我遇到了会话冲突的问题。
例如,商店域名 store1.myshopify.com
和 store2.myshopify.com
在同一个 chrome 浏览器中打开。首先我打开 store1 它工作正常。然后我打开商店 2,它更改了商店 1 应用程序的会话值。现在在两个商店应用程序中显示 store2 记录。
我不知道如何处理这个。请指导我如何解决这个问题。
很简单。当您收到传入请求时,您可以将活动会话存储名称与传入存储名称进行比较。如果它们不同,您必须关闭会话,然后为新商店重新打开它。
由于您的应用程序为所有商店发布了一个 cookie 密钥,任何打开的浏览器选项卡都会共享此密钥,因此您需要根据来自选项卡的信息close/open 进行连接。
请注意,当您关闭一个会话时,这意味着当您再次使用带有现在已关闭会话的选项卡时,您将重新进行身份验证。这意味着您的客户可能会也可能不会发送商店名称(特别是如果您的应用视图有 XHR 调用而没有商店名称作为参数)。所以在那里要小心。这可能很难处理好。
我使用节点 js 在 shopify 中创建了一个简单的嵌入式 public 应用程序用于测试目的。它工作正常。
而我在同一浏览器的不同选项卡中打开了两家商店。我遇到了会话冲突的问题。
例如,商店域名 store1.myshopify.com
和 store2.myshopify.com
在同一个 chrome 浏览器中打开。首先我打开 store1 它工作正常。然后我打开商店 2,它更改了商店 1 应用程序的会话值。现在在两个商店应用程序中显示 store2 记录。
我不知道如何处理这个。请指导我如何解决这个问题。
很简单。当您收到传入请求时,您可以将活动会话存储名称与传入存储名称进行比较。如果它们不同,您必须关闭会话,然后为新商店重新打开它。
由于您的应用程序为所有商店发布了一个 cookie 密钥,任何打开的浏览器选项卡都会共享此密钥,因此您需要根据来自选项卡的信息close/open 进行连接。
请注意,当您关闭一个会话时,这意味着当您再次使用带有现在已关闭会话的选项卡时,您将重新进行身份验证。这意味着您的客户可能会也可能不会发送商店名称(特别是如果您的应用视图有 XHR 调用而没有商店名称作为参数)。所以在那里要小心。这可能很难处理好。