2
votes

I'm having what I believe is the same issue as this user. I've also seen this error with "email" instead of "login" before I configured to allow username based sign in.

I can create a user fine. The user just can't sign in. Here are some key variables from config/initializers/devise.rb:

config.authentication_keys = [ :login ]
config.request_keys = [ :login ]
config.http_authenticatable = [false]

Here is the form from controllers/sessions/new.html.erb

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
  <div><%= f.label :login %><br />
  <%= f.email_field :login, autofocus: true %></div>

  <div><%= f.label :password %><br />
  <%= f.password_field :password, autocomplete: "off" %></div>

  <% if devise_mapping.rememberable? -%>
     <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
 <% end -%>

 <div><%= f.submit "Log in" %></div>
 <% end %>

Here are the parameters submitted:

{"utf8"=>"✓", 
    "authenticity_token"=>"yada",
    "user"=>{"login"=>"[email protected]", 
      "password"=>"[FILTERED]", 
      "remember_me"=>"0"}, 
    "commit"=>"Log in"}

rails 4.1, devise 3.4

Backtrace:

NoMethodError (undefined method login' for #<ActionDispatch::Request:0x0000000661c758>): devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:inblock in request_values' devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:in map' devise (3.4.0) lib/devise/strategies/authenticatable.rb:148:inrequest_values' devise (3.4.0) lib/devise/strategies/authenticatable.rb:128:in with_authentication_hash' devise (3.4.0) lib/devise/strategies/authenticatable.rb:77:invalid_for_params_auth?' devise (3.4.0) lib/devise/strategies/authenticatable.rb:16:in valid?' warden (1.2.3) lib/warden/proxy.rb:351:inblock in _run_strategies_for' warden (1.2.3) lib/warden/proxy.rb:349:in each' warden (1.2.3) lib/warden/proxy.rb:349:in_run_strategies_for' warden (1.2.3) lib/warden/proxy.rb:319:in _perform_authentication' warden (1.2.3) lib/warden/proxy.rb:127:inauthenticate!' devise (3.4.0) app/controllers/devise/sessions_controller.rb:16:in create' actionpack (4.1.0) lib/action_controller/metal/implicit_render.rb:4:insend_action' actionpack (4.1.0) lib/abstract_controller/base.rb:189:in process_action' actionpack (4.1.0) lib/action_controller/metal/rendering.rb:10:inprocess_action' actionpack (4.1.0) lib/abstract_controller/callbacks.rb:20:in block in process_action' activesupport (4.1.0) lib/active_support/callbacks.rb:113:incall' activesupport (4.1.0) lib/active_support/callbacks.rb:113:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:149:inblock in halting_and_conditional' activesupport (4.1.0) lib/active_support/callbacks.rb:229:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:229:inblock in halting' activesupport (4.1.0) lib/active_support/callbacks.rb:166:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:166:inblock in halting' activesupport (4.1.0) lib/active_support/callbacks.rb:166:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:166:inblock in halting' activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:149:inblock in halting_and_conditional' activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:149:inblock in halting_and_conditional' activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:149:inblock in halting_and_conditional' activesupport (4.1.0) lib/active_support/callbacks.rb:149:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:149:inblock in halting_and_conditional' activesupport (4.1.0) lib/active_support/callbacks.rb:86:in call' activesupport (4.1.0) lib/active_support/callbacks.rb:86:inrun_callbacks' actionpack (4.1.0) lib/abstract_controller/callbacks.rb:19:in process_action' actionpack (4.1.0) lib/action_controller/metal/rescue.rb:29:inprocess_action' actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:31:in block in process_action' activesupport (4.1.0) lib/active_support/notifications.rb:159:inblock in instrument' activesupport (4.1.0) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (4.1.0) lib/active_support/notifications.rb:159:ininstrument' actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (4.1.0) lib/action_controller/metal/params_wrapper.rb:250:inprocess_action' activerecord (4.1.0) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (4.1.0) lib/abstract_controller/base.rb:136:inprocess' actionview (4.1.0) lib/action_view/rendering.rb:30:in process' actionpack (4.1.0) lib/action_controller/metal.rb:195:indispatch' actionpack (4.1.0) lib/action_controller/metal/rack_delegation.rb:13:in dispatch' actionpack (4.1.0) lib/action_controller/metal.rb:231:inblock in action' actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:in call' actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:indispatch' actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:48:in call' actionpack (4.1.0) lib/action_dispatch/routing/mapper.rb:45:incall' actionpack (4.1.0) lib/action_dispatch/journey/router.rb:71:in block in call' actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:ineach' actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in call' actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:676:incall' warden (1.2.3) lib/warden/manager.rb:35:in block in call' warden (1.2.3) lib/warden/manager.rb:34:incatch' warden (1.2.3) lib/warden/manager.rb:34:in call' rack (1.5.2) lib/rack/etag.rb:23:incall' rack (1.5.2) lib/rack/conditionalget.rb:35:in call' rack (1.5.2) lib/rack/head.rb:11:incall' actionpack (4.1.0) lib/action_dispatch/middleware/params_parser.rb:27:in call' actionpack (4.1.0) lib/action_dispatch/middleware/flash.rb:254:incall' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall' actionpack (4.1.0) lib/action_dispatch/middleware/cookies.rb:560:in call' activerecord (4.1.0) lib/active_record/query_cache.rb:36:incall' activerecord (4.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in call' actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.1.0) lib/active_support/callbacks.rb:82:in run_callbacks' actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.1.0) lib/action_dispatch/middleware/reloader.rb:73:in call' actionpack (4.1.0) lib/action_dispatch/middleware/remote_ip.rb:76:incall' actionpack (4.1.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call' actionpack (4.1.0) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.1.0) lib/rails/rack/logger.rb:38:in call_app' railties (4.1.0) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.1.0) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.1.0) lib/rails/rack/logger.rb:20:incall' actionpack (4.1.0) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.1.0) lib/active_support/cache/strategy/local_cache_middleware.rb:26:incall' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.1.0) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.1.0) lib/rails/engine.rb:514:incall' railties (4.1.0) lib/rails/application.rb:144:in call' rack (1.5.2) lib/rack/lock.rb:17:incall' rack (1.5.2) lib/rack/content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:inservice' /home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service' /home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/httpserver.rb:94:inrun' /home/eric/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

Any ideas?

1
Could you please show the migration which creates "users" table and the User model?Hoa
You can checkout the model and migrations here: gist.github.com/ArbolEric/0599a93e36380aaed7c9Eric H.

1 Answers

1
votes

You use a virtual attribute called login as the authentication key. What's missing is overriding Devise's find_for_database_authentication

See here