目标是安全地在/帐户
中显示自定义客户数据。用户需要登录Shopify商店才能访问路由。
数据绑定到服务器中客户的电子邮件地址。因此,我将使用请求URL中的电子邮件地址获取请求。
在/account
liquid模板中,我使用的是Vue组件。它将处理对nodejsapi的请求(我使用的是feathers/express)。
到目前为止,我读到了关于应用程序代理和应用程序桥的内容,但我不知道这些内容在这里是否合适。
主要问题:
如何保护API,以确保只有登录的Shopify客户才能在商店内获取自己的数据?如何验证用户并确保API只能通过商店访问?
注意:我对Shopify真的是个新手。请详细解释。谢谢
Shopify node Create
生成node JS one李>const { NotAuthenticated } = require('@feathersjs/errors');
const crypto = require('crypto');
const safeCompare = require('safe-compare');
module.exports = () => {
return async context => {
const { query } = context.params;
const signature = query.signature;
delete query.signature;
let sortedParams = '';
for (const [key, value] of Object.entries(query).sort()) {
sortedParams += `${key}=${value}`;
}
const calculatedSignature = crypto
.createHmac('sha256', process.env.SHOPIFY_API_SECRET)
.update(sortedParams, 'utf-8')
.digest('hex');
if (!safeCompare(calculatedSignature, signature)) {
throw new NotAuthenticated();
}
return context;
};
};
这很容易。这个术语有点奇怪,但这里是所有你需要知道的。
这将让您知道来电是安全的,并且来自Shopify。通话可以包括两个关键参数,即电子邮件和客户ID。
因此,您有一封电子邮件和一个ID。现在您可以安全地获取重要的客户帐户数据,并将其以JSON格式返回到前端的组件中。
那就是了。没有更多的了。玩得开心。