【发布时间】:2020-12-23 19:22:54
【问题描述】:
我目前正在开发的 Wix 网站安装了定价计划应用,根据这些计划,用户可以通过我正在开发的应用访问我在网站上公开的某些 API 功能。由于我无法在 http-functions.js 文件中检索用户对象,因此我不得不创建一个单独的集合来存储有关用户订阅的数据。订购计划后,这可以正常工作,因为我可以挂钩 onPlanPurchased 事件并在那里执行我需要的任何逻辑来修改所述集合。但是,不存在取消计划的此类事件,这意味着对集合的任何修改都必须通过从客户端代码调用的后端函数来完成,例如:
cancelPlan(wixUsers.currentUser.id)
.then( (results) => {
if (results === "SUCCESS") {
wixPaidPlans.cancelOrder(orderId)
.then( () => {
wixWindow.openLightbox("PlanCancelled");
})
.catch( (err) => {
wixWindow.openLightbox("PlanCancelFailed");
});
}else {
wixWindow.openLightbox("PlanCancelFailed");
}
})
.catch( (err) => {
wixWindow.openLightbox("PlanCancelFailed");
});
正如您所看到的,这里的问题是,由于它是在浏览器中运行的,是否有人可以修改它并只运行 wixPaidPlans.cancelOrder() 行而不运行我的后端函数?如果是这样,有人可以取消他们的付款,但仍然可以通过我谈到的 API 功能访问我的网站提供的东西。我担心这个是正确的吗?如果是这样,是否有人对我还能如何解决这个问题有任何指示?谢谢。
【问题讨论】:
-
cancelPlan()方法是否以某种方式与您的后端通信? -
是的,我的 cancelPlan() 方法位于后端模块中,用于修改我的集合中的数据。如果用户记录更新成功,则返回“SUCCESS”消息。
-
在服务器端进行验证以确保端点不会受到恶意攻击
-
我无法在服务器端进行验证,因为“wixPaidPlans.cancelOrder()”似乎只能访问客户端并且只能由用户发起,那么我需要一些方法来检查是否已成功修改集合。还是我误解了你的建议?
标签: javascript client-side velo