在登录时设计身份验证错误,注册未授权返回401

时间:2018-08-12 14:10:38

标签: ruby-on-rails ruby devise

环境: 红宝石:2.5.1 导轨:5.2.0 设计:4.4.3

我在rails应用程序中添加了具有可确认功能的devise gem。在登录页面上,我按预期收到“无效的电子邮件或密码” Flash消息,但是当我尝试登录未确认的帐户时,没有收到预期的Flash消息,例如“登录前确认您的电子邮件”或任何附带以下消息的消息:在devise.yml文件中未确认。 在服务器日志上,我得到:

Started POST "/login" for 127.0.0.1 at 2018-08-12 19:26:04 +0530
Processing by Users::SessionsController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"2AZ9GqM2yqKKqHbBZ0ouB1YqwcRhLzyloYkHDqem5EcSmuE1BPCuX+B6/wpC5wM14DRbOAOw1YUI6TvNMj5f6g==", "user"=>{"email"=>"asdf@as.df", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log In"}
  User Load (57.9ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["email", "asdf@as.df"], ["LIMIT", 1]]
   (0.3ms)  BEGIN
   (0.2ms)  COMMIT
Completed 401 Unauthorized in 362ms (ActiveRecord: 58.3ms)

与注册表格相同,当我尝试使用已注册的电子邮件地址进行注册时,我没有收到任何消息,并停留在注册页面上。注册服务器日志:

Started POST "/" for 127.0.0.1 at 2018-08-12 19:33:06 +0530
Processing by Users::RegistrationsController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"2AZ9GqM2yqKKqHbBZ0ouB1YqwcRhLzyloYkHDqem5EcSmuE1BPCuX+B6/wpC5wM14DRbOAOw1YUI6TvNMj5f6g==", "user"=>{"full_name"=>"asdf asdf", "email"=>"james@bond.uk", "password"=>"[FILTERED]"}, "commit"=>"Sign Up"}
   (0.3ms)  BEGIN
  User Exists (1.0ms)  SELECT  1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2  [["email", "james@bond.uk"], ["LIMIT", 1]]
  User Exists (1.1ms)  SELECT  1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER($1) LIMIT $2  [["email", "james@bond.uk"], ["LIMIT", 1]]
   (0.5ms)  ROLLBACK
  Rendering users/registrations/new.html.erb within layouts/application
  Rendered users/registrations/new.html.erb within layouts/application (3.7ms)
  Rendering users/sessions/new.html.erb
  Rendered users/sessions/new.html.erb (1.4ms)
  Rendered shared/_login_modal.html.erb (2.0ms)
  Rendering users/registrations/new.html.erb
  Rendered users/registrations/new.html.erb (0.4ms)
  Rendered shared/_signup_modal.html.erb (0.9ms)
  Rendered shared/_header.html.erb (5.1ms)
  Rendered shared/_footer.html.erb (0.3ms)
Completed 200 OK in 310ms (Views: 60.5ms | ActiveRecord: 75.0ms)

Devise帮助程序文件

def devise_error_messages!
    return "" unless devise_error_messages?

    messages = resource.errors.full_messages.map { |msg| content_tag(:p,msg)}.join
    sentence = I18n.t("errors.messages.not_saved",
                      :count => resource.errors.count,
                      :resource => resource.class.model_name.human.downcase)

    html = <<-HTML
    <div class="error-description">
      #{messages}
    </div>
    HTML

    html.html_safe
  end

  def devise_error_messages?
    !resource.errors.empty?
  end

登录会话控制器

class Users::SessionsController < Devise::SessionsController
  after_action :unauthenticated

  # POST /resource/sign_in
  def create
    self.resource = warden.authenticate(auth_options)
    redirect_to new_user_session_path and return if resource.nil?
    set_flash_message!(:notice, :signed_in)
    sign_in(resource_name, resource)
    yield resource if block_given?
    respond_with resource, location: after_sign_in_path_for(resource)
  end
def unauthenticated
    flash[:error] = t("devise.failure.#{request.env['warden'].message}") unless request.env['warden'].message.blank?
  end
end

0 个答案:

没有答案
相关问题