簡體   English   中英

設計-從restful_authentication升級后,將authentication_keys更改為:login-無效的電子郵件或密碼錯誤

[英]Devise - changed authentication_keys to :login after upgrade from restful_authentication - invalid email or password error

我最近將Rails應用程序從restful_authentication升級到了devise,默認情況下,devise登錄頁面可以正常工作(通過電子郵件進行身份驗證)。 我不想通過電子郵件進行身份驗證,當我在用戶模型上的“登錄”字段上移動身份驗證時,它不再起作用,並且出現以下錯誤:

無效的電子郵件或密碼。

Devise.rb

config.authentication_keys = [ :login ]

User.rb

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable, :trackable,
         :encryptable, :encryptor => :restful_authentication_sha1
  attr_accessible :login, :email, :password, :password_confirmation, :remember_me, :twitter_name, :twitter_id, :atoken, :asecret

new.haml(用於會話)

  = form_tag session_path, :class => 'enter_form' do
    %label.form_label_small{:for => "login", :style => "color: #336699"} username
    %br/
    = text_field_tag 'login', @login, :class => 'input_style_state', :style => 'width: 250px;'
    .clear{:style => 'height: 4px'}
    %label.form_label_small{:for => "password", :style => "color: #336699"} password
    %br/
    = password_field_tag 'password', nil, :style => 'width: 250px;'
    .clear{:style => 'height: 4px'}
    %p{:style => "padding: 0; margin:0;"}
      = check_box_tag 'remember_me', '1', @remember_me, :style => 'padding: 0; margin: 0; border: 0'
      = label_tag 'remember_me', 'remember me'
    .clear{:style => "height: 8px"} 
    %a.button.submit_form{:href => '/login'}
      %span{:style => 'width: 40px'}
        login

我在另一個項目中也遇到過類似的問題。 我想象如果:login被成功地用作身份驗證密鑰,那么錯誤消息將顯示“無效的登錄名或密碼”,而不是“無效的電子郵件或密碼”

關於如何解決這個問題的任何想法? 我的錯誤日志什么也沒說。 這是日志:

Started POST "/users/sign_in" for 127.0.0.1 at Thu Nov 10 13:46:13 -0500 2011
  Processing by Devise::SessionsController#create as HTML
  Parameters: {"authenticity_token"=>"AMole3YOhXPuOQGX27W1Mr7c18XR1Xk9DUF6JvstbZA=", "utf8"=>"✓", "user"=>{"remember_me"=>"0", "login"=>"aressidi", "password"=>"[FILTERED]"}}
  User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`login` = 'aressidi' LIMIT 1
  NavAd Load (0.3ms)  SELECT `nav_ads`.* FROM `nav_ads`
Completed   in 34ms
  Processing by Devise::SessionsController#new as HTML
  Parameters: {"authenticity_token"=>"AMole3YOhXPuOQGX27W1Mr7c18XR1Xk9DUF6JvstbZA=", "utf8"=>"✓", "user"=>{"remember_me"=>"0", "login"=>"aressidi", "password"=>"[FILTERED]"}}

設計錯誤消息不是動態生成的,因此該錯誤消息不一定表示它正在尋找錯誤的身份驗證字段。 參見http://asciicasts.com/episodes/210-customizing-devise

還要注意您使用的紅寶石版本。 Devise似乎沒有正確使用Ruby 1.9.3的config.authentication_keys設置。 一旦我切換回Ruby 1.9.2,它立即開始工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM