Python shopify_验证多存储会话处理
我正在使用Django和shopify_auth包来连接shopify 有人举过如何处理多商店会话/连接的例子吗 到目前为止,我正在考虑用以下内容修改shopify_auth的Python shopify_验证多存储会话处理,python,django,shopify,Python,Django,Shopify,我正在使用Django和shopify_auth包来连接shopify 有人举过如何处理多商店会话/连接的例子吗 到目前为止,我正在考虑用以下内容修改shopify_auth的@login\u required装饰器,但我不确定是否会遗漏任何内容: 在shopify_auth/decortors.py中: def login_required(f, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None): @wraps(f)
@login\u required
装饰器,但我不确定是否会遗漏任何内容:
在shopify_auth/decortors.py中:
def login_required(f, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):
@wraps(f)
def wrapper(request, *args, **kwargs):
if request.user.is_authenticated():
# Extract the Shopify-specific authentication parameters from the current request.
new_request_d = [ ... get request.GET params ('shop', etc.) ... ]
# Compare current active request.user with new reqeust.GET's 'shop'
if request.user != new_request_d['shop']:
[ ... do something to change session to the other shop ...]
[ ... redirect as necessary .... ]
return f(request, *args, **kwargs)
在shopify_auth模块中,他们的是一个
这暗示着
任何方向正确的帮助都将不胜感激。来自Shopify的每一个请求都会附带商店域。您的当前会话已设置为商店域。比较两者。如果它们不同,请清除旧会话,并使用不同的传入商店域验证新会话。对我来说似乎很好 我通过创建一个定制的修改的
SessionMiddleware
解决了我所使用的应用程序中的问题,该软件在每个商店创建和处理单独的会话cookies,并通过将请求关联到各自的商店(按以下优先顺序):
CsrfViewMiddleware
,AuthenticationMiddleware
,SessionAuthenticationMiddleware
,
SecurityMiddleware
),这样用户就不会欺骗您的系统。
这样做的好处是,如果您通过AJAX加载任何内容,在不同应用程序安装的选项卡之间来回切换总是有效的,而不是注销用户,您不必担心实现奇怪的重定向逻辑来处理这些错误。我如何访问新的requests shop域?它作为参数shop在请求中的一个盘片上交给您。我可以将“shop”视为
请求。只有当它作为查询字符串参数传递时,才能获取参数。但有时它并没有通过。有什么建议吗?你能提供一个更具体的例子(针对我所问的Python Shopify API)?我可以在我的回答中看到x-shopid:1231245
,但看不到与“shop”有关的任何其他内容……这与Python、PHP、Ruby或任何其他脚本语言无关。当你检查你的请求时,Shopify域名(一个很好的主键,因为它永远不会改变)会作为一个参数交给你。你用它来决定谁在敲门。如果您没有看到,那么请求来自哪里?你呢?如果需要,请确保添加它。请注意,Webhook、carrier shipping请求和应用程序代理调用都使用头来嵌入它。是的,我以前尝试过实现类似的东西,但后来被卡住了。我更喜欢这种方法,因为我认为它对用户来说听起来更无缝。我会再试一次……我还没有机会回过头来实现它(因为我一直在开发其他功能)。我想知道你是否有时间承担一项小工作,为我创建这个自定义会话中间件?我的Skype在我的个人资料中,请随时与我联系