2012-01-07 2 views
1

Используя Devise и настраиваемые маршруты, всякий раз, когда у пользователя неверная попытка входа (неправильный проход), Rails не перенаправляет обратно на страницу входа. Если я не использую пользовательские маршруты, то он отлично работает. Что я здесь делаю неправильно?Утилита не перенаправляется на страницу с подписью о недействительной попытке с настраиваемыми маршрутами

Цель: Я хочу использовать/зарегистрировались вместо/пользователей/sign_in

routes.rb:

devise_for :users, :controllers => { :sessions => "user_sessions" },:skip => [:sessions] do 
    get 'signin' => 'user_sessions#new', :as => :new_user_session 
    post 'signin' => 'user_sessions#create', :as => :user_session 
    delete 'signout' => 'user_sessions#destroy', :as => :destroy_user_session 
    get 'signout' => 'user_sessions#destroy', :as => :destroy_user_session 
end 

внутри UserSessionsController/создать:

resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new") 

выход сервера при использовании пользовательских маршрут/подпись:

Completed 401 Unauthorized in 2ms 

выход сервера при использовании маршрута по умолчанию/пользователь/sign_in:

Completed 401 Unauthorized in 2ms 
Processing by UserSessionsController#new as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"2gqKTGWPv69HpVp7oSEg2tRDj5FU453my7LhKm0xu7E=", "user"=>{"email"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"SIGN IN"} 
Rendered user_sessions/new.html.erb within layouts/user_sessions (56.6ms) 
+0

Вы дошли до конца? –

ответ

1

Замена:

<%= form_for(resource, :as => resource_name, :url => admin_session_path(resource_name)) do |f| %> 

с:

<%= form_for(resource, :as => resource_name, :url => admin_session_path) do |f| %> 

в сессиях/new.html.erb файл работал для меня.

0

Я знаю, что этот вопрос был отправлен пару месяцев назад, но я горячий тот же вопрос, и после борьбы с ним в течение нескольких часов, перезапись DEViSE SessionController , Devise Custom Failure, отладка и т. Д., Я, наконец, узнал, что происходит, и я решил поделиться решением, чтобы вы, ребята, не смогли пройти через это. Ошибка «Completed 401 Unauthorized in XXms» происходит в методе создания SessionController в файле lign: resource = build_resource (...). И ресурс не может быть создан, поскольку ресурс не передается на сервер. Теперь проблема заключается в том, почему ресурс не передается на сервер? Я использую JQUERY mobile, который отправляет sign_in как вызов AJAX, который JQUERY не может загружать данные через AJAX. Yuu нужно добавить для входа в аккаунт сформировать данные-АЯКС = ложь: в DEViSE/сессий/new.html.erb изменить форму, чтобы выглядеть следующим образом:

form_for(resource, :as => resource_name, :url => user_session_url, html: {data: {ajax: false}}) do |f| 

Надежда, что помогает кто-то вниз по дороге.

Смежные вопросы