Не получается, чтобы пользователь вошел в нашу панель администратора после обновления нашего приложения с Rails 2.3.x до Rails 3.1.3.Я использую последнюю версию Devise, которая на момент публикации была v1.5.3.
A POST
на маршрут session#create
возвращает ответ 401
(и все параметры выглядяткак будто они входят правильно);это происходит, когда Warden пытается авторизовать пользователя, используя одну из стратегий Devise (:database_authenticatable
).Вот моя модель пользователя.
class User < ActiveRecord::Base
devise :database_authenticatable, :validatable
attr_accessible :email, :password, :password_confirmation
end
У меня есть переопределено Devise::SessionsController
в моем :admin
пространстве имен (логины только для администраторов, и у них есть свой собственный макет сайта, таким образом, переопределение).В контроллере нет ничего особенного, кроме макета:
class Admin::SessionsController < ::Devise::SessionsController
layout "admin"
end
У меня есть слегка настроенные маршруты, и вот код, который я получил для этого.
devise_for :users, :controllers => { :sessions => 'admin/sessions' }
В заголовках моего макета есть бит csrf_meta_tag
, а в моем ApplicationController
есть строка protect_from_forgery
.Ошибки формы пустые, когда она возвращается для повторного рендеринга страницы.
Я прошел через код (вплоть до lib/warden/proxy.rb
), и Уорден, похоже, не думает, что :database_authenticatable
стратегия, которую я использую, действительна ( исходный код начальника для этой части).Пользователь является действительным пользователем ... Я создал его через сеанс Rails rails console
IRB, с нуля, с действительным паролем и всем остальным.Я надеюсь, что он должен признать это как действительное, верно?Или я даже лаю нужное дерево?