0
我正在创建一个应用程序,它具有基于外部API和登录/注册方法的身份验证。我有一个简单的控制器RegistrationsController
,它使用Curb来触发一个请求。为什么我会得到一个重复的路边请求?
这是控制器:
class RegistrationsController < ApplicationController
def new
end
def create
if params[:user][:email].present? && params[:user][:password].present? && params[:user][:phone].present? && params[:user][:login].present?
# API request
password = params[:user][:password]
body = {
"register" => {
"password" => password,
"email" => params[:user][:email],
"phone" => params[:user][:phone],
"login" => params[:user][:login]
}
}
c = Curl::Easy.http_post("http://domain.com/register", body.to_json
) do |curl|
curl.headers['Content-Type'] = 'application/json'
curl.headers['application'] = 'appname'
curl.headers['device'] = 'www'
end
c.perform
response_body = JSON.parse(c.body_str)
throw response_body # This line ALLWAYS gives me 'login taken' error
return
else
@user = User.new(params[:user])
render action: "new", notice: 'Error'
end
end
end
(我也有一个views/registrations/new.html.slim
视图用一个简单的形式,但它现在并不重要。)
我的路线是这样的:
match 'users/sign_up' => 'registrations#new', :via => :get, :as => :user_register
match 'users/sign_up' => 'registrations#create', :via => :post, :as => :user_create
我的应用程序在单击registrations#new
页面上的“注册”按钮后,会触发两次“限制”请求。因此,我总是会收到“登录”错误。用户注册成功,但我没有从第一个请求中得到任何结果,仅从第二个请求中获得结果。
它以某种方式通过滑轨造成的,我100%肯定它,因为它可以在该请求被触发两次API服务器日志中可以看出。另外,我使用PHP编写的完全相同的脚本,并且在那里注册工作正常。
在我的Rails开发者控制台,该请求被触发只是一个时间,所以这是很奇怪的。
有没有人知道这里发生了什么?