首页 > 解决方案 > 限制对来自同一位置的 Web API 的请求

问题描述

我们有一个 web api,我们允许 anon[AllowAnonymous] 用户使用我们自己的移动应用程序(android 和 iOS)进行注册。最近有报道称,有多个用户使用我们不允许的相同电子邮件地址注册。我们有多项检查不允许这种情况发生。当我们检查我们的 IIS 日志时。我们有这样的东西:

2020-02-15 18:40:42 XXX.XXX.X.XX POST /api/Account/Register - 8082 - Y.YY.YYY.YYY OurIOSAppName/3+CFNetwork/1121.2.2+Darwin/19.3.0 - 400 0 64 69968
2020-02-15 18:40:42 XXX.XXX.X.XX POST /api/Account/Register - 8082 - Y.YY.YYY.YYY OurIOSAppName/3+CFNetwork/1121.2.2+Darwin/19.3.0 - 200 0 0 13218
2020-02-15 18:40:42 XXX.XXX.X.XX POST /api/Account/Register - 8082 - Y.YY.YYY.YYY OurIOSAppName/3+CFNetwork/1121.2.2+Darwin/19.3.0 - 200 0 0 17390

似乎我们的网络 api 正在使用 AlamoFire 接收来自 iOS 移动应用程序的多个请求,并且与 Android 的 RetroFit 相同。有没有办法阻止这个?

标签: .netasp.net-core-webapiiis-10

解决方案


问题不在于同时有多个请求,而是您用于创建用户的代码具有竞争条件。有很多方法可以解决这个问题,下面两张票只是一个开始。

防止实体框架中 if-exists-update-else-insert 的竞争条件

https://softwareengineering.stackexchange.com/questions/263726/how-to-prevent-race-conditions-in-a-web-application


推荐阅读