我有这个应用程序,在第一次启动时,它会在我的服务器后端调用 2 个不同的 API 端点(两者的目的都非常不同)。但是,这两种方法都有一个使用标头中传递的信息(设备标识符 + api 密钥)before_filter
对调用进行身份验证的方法。HTTP_AUTH
如果它无法从我的设备表中找到具有提供的标识符的行,它会自动创建一个具有该标识符的新行。我的问题是,有时这两个调用似乎是同时进行的,以至于两个请求都找不到任何记录,因此它们都创建了一个新的设备行(结果是具有相同设备标识符的重复行)。
我的身份验证方法如下所示:
def current_user
authenticate_with_http_basic do |udid, secret|
if secret == APP_SECRET
@device = Device.find_by_udid(udid)
if !@device
@device = Device.new
@device.udid = udid
@device.created_on = DateTime.now.utc
end
// set a bunch of properties on @device
@device.connected_at = DateTime.now.utc
@device.save
end
end
end