2011-11-10 10 views
0

最近、私はRailsアプリケーションをrestful_authenticationからアップグレードし、デフォルトでdeviseログインページ(電子メールで認証)が機能しました。でも、私は電子メールを介して認証するようにしたくないと私はユーザモデルの「ログイン」フィールドに認証を移動したとき、それはもはや動作し、私は次のエラーを取得:Devise - upgraded_authenticationからのアップグレード後のログイン - 無効なメールまたはパスワードのエラー

Invalid email or password.

Devise.rb

config.authentication_keys = [ :login ] 

= 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 
01(セッション用)

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

私は別のプロジェクトで同様の問題を抱えています。私は想像しています:認証キーとしてログインが成功したとき、エラーメッセージに「無効なログインまたはパスワード」と表示される場合は、

これを捜す方法はありますか?私のエラーログは何も言わない。ここにログがあります:

Started POST "https://stackoverflow.com/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]"}} 
+0

移行を実行した後にサーバーを再起動すると、私の問題は解決しました。なんらかの理由で、サーバーは何かをキャッシュし、信任状を受け入れませんでした。 – Chloe

答えて

1

エラーメッセージが動的に生成されないため、エラーメッセージは必ずしも間違ったフィールドを見て認証を行っているとは限りません。 http://asciicasts.com/episodes/210-customizing-devise

また、使用しているルビのバージョンをメモしてください。 Deviseは、Ruby 1.9.3でconfig.authentication_keysの設定を正しく使用していないようです。私はRuby 1.9.2に戻ってすぐに作業を開始しました。

関連する問題