【发布时间】:2015-06-09 07:39:10
【问题描述】:
我正在使用 AngularJS、express、nodejs 和 Passportjs 开发一个小型 webApp。我一直在按需在我的 API 上创建端点,但现在我遇到了问题。 我有一个用户无法在需要时调用的端点。当用户在应用程序中执行特定操作时会进行此 API 调用,因此他们可以获得积分。 端点类似于 /api/users/updatePoints ,我不希望使用开发人员工具的用户重新发送呼叫并获得他们不应该获得的积分。 我怎么能做到这一点?我已经想了一天,但我想不出任何合理的东西。
提前谢谢你:)
--编辑-- 最后我刚刚删除了那个 ENDPOINT 并直接在服务器端的数据库中写入。不是我想要的解决方案,但足够好。谢谢!!
【问题讨论】:
-
为什么不在用户在应用中执行特定操作时设置一个标志,并在调用 updatePoints 路由时检查该标志?
-
可以做到。如何从我的 /api/users 的 index.js 中访问已在前端设置的 var?我可以在这里查看:“router.post('/updatePoints', auth.isAuthenticated(), controller.updatePoints);”
-
您可以在post操作中提供查询参数或数据。
-
@Trendy 这种方法的问题是您可以随时复制它,因为这是在前端。因此,用户可以将帖子发送到 API 并在他想要的所有时间发送它并获得他想要的所有积分。谢谢!
-
这是我不喜欢 SPA 的地方,API 调用无论如何都会暴露出来。同意 Jorge 的观点,将更新点端点放在服务器端是这种方式的最佳方法。无论如何,我仍然更喜欢 MVC 而不是 SPA,jquery 运行良好,所以如果你想要它,你不必提交和重新加载页面
标签: angularjs node.js api express passport.js