Ruby on rails 为可确认用户设计Ajax会话
我有一个供用户注册的ajax表单。我在尝试登录未确认的用户时遇到问题。如果我输入了有效的用户名和密码,它就永远不会从会话控制器中到达用户的创建操作,如果我为用户输入了错误的密码,我将进入创建操作并从无效的\u登录\u尝试方法返回良好的响应 会话控制器:Ruby on rails 为可确认用户设计Ajax会话,ruby-on-rails,ajax,devise,Ruby On Rails,Ajax,Devise,我有一个供用户注册的ajax表单。我在尝试登录未确认的用户时遇到问题。如果我输入了有效的用户名和密码,它就永远不会从会话控制器中到达用户的创建操作,如果我为用户输入了错误的密码,我将进入创建操作并从无效的\u登录\u尝试方法返回良好的响应 会话控制器: class SessionsController < Devise::SessionsController def create debugger resource = Bbp::User.find_for_datab
class SessionsController < Devise::SessionsController
def create
debugger
resource = Bbp::User.find_for_database_authentication(email: params[:user][:email])
return invalid_login_attempt unless resource
return invalid_login_attempt unless resource.valid_password?(params[:user][:password])
return confirmation_needed if resource.confirmed_at.nil?
if resource.valid_password?(params[:user][:password])
sign_in :user, resource
return render nothing: true
end
invalid_login_attempt
end
protected
def invalid_login_attempt
render json: "Wrong username or password", status: 401
end
def confirmation_needed
render json: "You need to confirm your email before you can continue", status: 401
end
end
class sessioncontroller
我的表格是:
<h2>Sign in</h2>
<div class="message-success-field user-sign-in-row"></div>
<%= form_for(resource, as: resource_name, url: '/admin.json',html: {id: 'new_user_session'}, remote: true ) do |f| %>
<div class="form-group">
<%= f.email_field :email, class: "form-control", placeholder: "Email", autofocus: true %>
</div><!-- form-group -->
<div class="form-group">
<%= f.password_field :password, class: "form-control", placeholder: "Password #{'(' + @minimum_password_length.to_s + ' characters minimum)' if @minimum_password_length}", autocomplete: "off" %>
</div><!-- form-group -->
<% if devise_mapping.recoverable? %>
<small><%= link_to "Forgot your password?", new_password_path(resource_name) %></small><br />
<% end %>
<% if devise_mapping.rememberable? %>
<div class="field">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<% end %>
<%= f.button "Sign in", class: "form-control btn btn-success" %>
<p>Or connect via Facebook</p>
<%= link_to "Sign in with facebook", "/auth/facebook", class: "form-control btn btn-primary" %>
<% end %>
<script>
$(document).ready(function() {
$('#new_user_session')
.bind('ajax:success', function(response, evt, data, status, xhr) {
$('div.user-sign-in-row').empty()
$('div.user-sign-in-row').append("You are successfully logged in")
})
.bind("ajax:error", function(evt, xhr, status, error) {
$('div.user-sign-in-row').empty()
$('div.user-sign-in-row').append(xhr.responseText)
});
});
</script>
登录
或者通过Facebook连接
$(文档).ready(函数(){
$(“#新的_用户_会话”)
.bind('ajax:success',函数(响应、evt、数据、状态、xhr){
$('div.user-sign-in-row').empty()
$('div.user-sign-in-row').append(“您已成功登录”)
})
.bind(“ajax:error”,函数(evt、xhr、status、error){
$('div.user-sign-in-row').empty()
$('div.user-sign-in-row').append(xhr.responseText)
});
});
我认为这是因为在创建之前的某个地方,设计检查用户是否可靠,但我找不到在哪里。我还设置会话控制器响应html和json
什么是问题