Rails设计不显示身份验证错误

时间:2018-07-04 07:49:32

标签: ruby-on-rails

Devise显示正确注册的错误,但未显示登录错误。我使用的是用户名,而不是电子邮件。当我尝试使用错误的用户名/密码登录时,它显示了一个空错误数组

{"error"=>""}

这是控制器代码:

class LoginsessionsController < Devise::SessionsController
  before_action :authenticate_user!
  protect_from_forgery prepend: true
  before_action :configure_permitted_parameters, if: :devise_controller?
  skip_before_action :verify_signed_out_user


  def new
    self.resource = resource_class.new(sign_in_params)
    clean_up_passwords(resource)
    yield resource if block_given?
    redirect_to '/login', :alert => { :error => @user.errors.full_messages.join(', ') }
  end
  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_in, keys: [:username, :remember_me])
  end
  def after_sign_out_path_for(resource_or_scope)
   root_path
end
end

模型user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, authentication_keys: [:username]
  validates_uniqueness_of :username
  attr_accessor :email, :password, :password_confirmation, :remember_me, :username
  validates :email, uniqueness: true
  validates :username, uniqueness: true

end

和login.html.erb

<div class="form-app">
        <%= form_for(:user, :url => session_path(:user)) do |f| %>
        <%= f.text_field :username, :class => "input", :placeholder => "Username" %>
        <%= f.password_field :password, :class => "input", :placeholder => "Password" %>
        <% if Devise.mappings[:user].rememberable? -%>
          <div class="field">
            <%= f.check_box :remember_me %>
            <%= f.label :remember_me %>
          </div>
        <% end -%>
        <%= f.submit "Sign In", :class => "login" %>
        <% end %>
      </div>

0 个答案:

没有答案
相关问题