Я искал это как сумасшедший, и пока не повезло.
Пока что sign_in и sign_out работают нормально. Они перенаправляют на правильное действие. Моя проблема в том, что sign_in не работает. Меня отправляют на то, что выглядит как пустая html-страница с надписью «Неверный логин или пароль». отображаемый действием create, или текст, отображаемый действием create . AFAIK create должен перенаправлять или отображать только в случае сбоя. У меня есть собственный контроллер, и единственная причина, по которой у меня есть приведенный здесь код разработки, — это посмотреть, где происходит поведение. Мне действительно нужно только наследовать поведение на этом этапе, потому что я не пытаюсь перенаправить на пользовательский путь после аутентификации.
журнал выглядит следующим образом:
Started POST "/login.user" for 127.0.0.1 at 2012-05-14 15:50:02 -0700
Processing by Users::SessionsController#create as
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Pf2+YBqmb5+231nbuD/MeDlz6H7/qOjV4N50WnlJ0rc=", "user"=>{"login"=>"qwdwqqd", "password"=>"[FILTERED]", "remember_me"=>"0"}, "x"=>"40", "y"=>"8"}
Completed 401 Unauthorized in 32ms
Вот мой контроллер:
Users::SessionsController < ::Devise::SessionsController
def create
resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
Мои маршруты следующие:
devise_for :users, :controllers => {:sessions => "users/sessions", :registrations => "users/registrations"}, :path => '', :path_names => { :sign_in => 'login', :sign_out => 'logout' }
.
.
root :to => 'root#index'
Я решил, что это не проходит мимо
resource = warden.authenticate!(auth_options)
строка при сбое аутентификации
Кажется, что имя ресурса каким-то образом добавляется к пути входа в систему после сбоя надзирателя. например /login.user вместо просто /login
Любая помощь будет оценена, спасибо заранее.
Rails 3.2, Devise 2.0.4, стойка (1.4.1), ruby 1.9.3