2013-05-07 3 views
1

Я использую Devise для проверки своего сайта. Я моя модель пользователя устанавливается следующим образом:Devise 401 on Login

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :lockable, :timeoutable and :omniauthable 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, 
     :token_authenticatable, :confirmable 

    attr_accessible :email, :name, :password, :password_confirmation, :remember_me, :college_id, :role 

со следующими маршрутами:

devise_for :users 
    as :user do 
    get 'sign_in'    => 'devise/sessions#new',  :as => :login 
    post 'sign_in'   => 'devise/sessions#create', :as => :user_session 
    delete 'sign_out'   => 'devise/sessions#destroy', :as => :logout 
    get 'signup'    => 'devise/registrations#new', :as => :signup 
    get 'forgot_password'  => 'devise/passwords#new',  :as => :forgot_password 
    get 'resend_confirmation' => 'devise/confirmations#new', :as => :resend_confirmation 
    end 

и я получаю следующее сообщение об ошибке:

Started POST "/sign_in" for 127.0.0.1 at 2013-05-06 19:57:34 -0400 
Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"iy0BI3A6zY5TTIJ2eYkOpgwFIFubO2O8wII8GAmjDmE=", "email"=>"[email protected]", "password"=>"[FILTERED]", "x"=>"-630", "y"=>"-434"} 
Completed 401 Unauthorized in 1ms 
Processing by Devise::SessionsController#new as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"iy0BI3A6zY5TTIJ2eYkOpgwFIFubO2O8wII8GAmjDmE=", "email"=>"[email protected]", "password"=>"[FILTERED]", "x"=>"-630", "y"=>"-434"} 

Это показывает на пользовательском интерфейсе как «Недействительный адрес электронной почты или пароль». однако я уверен, что введенный пароль верен, и пользователь существует в базе данных (проверяется с помощью консоли). Кажется, что Devise не делает никаких запросов к базе данных. Это нормально?

Любые идеи? Вся помощь приветствуется.

+0

Убедитесь, что ваша пользовательская версия контроллеров разработки не требует проверки подлинности. Убедитесь, что они также являются расширениями базовых классов исходного кода, а не просто 'ApplicationController'. Похоже, что это настройка, так что приложение требует, чтобы вы были аутентифицированы для аутентификации. Не могли бы вы показать нам свой 'SessionController'? – PaReeOhNos

+0

У меня нет пользовательского SesssionController, я полностью использую контроллеры Devise. – NolanDC

+0

hmm, почему у вас есть блок 'as: users do'? Для простого старого дизайна вам просто нужно «devise_for: users». Попробуйте прокомментировать весь блок и посмотрите, помогает ли это? – PaReeOhNos

ответ

2

попробовать это в конфигурации/инициализаторах/devise.rb

config.authentication_keys = [ :email ] 

в user.rb вам нужно добавить attr_accessor для: пароль, как и не сохраняются в базе данных по соображениям безопасности

attr_accessor :password 
+0

Я попытался добавить 'attr_accessor: password' в user.rb, из-за чего пользователи в моем seed.rb создавались без encrypted_password (пустой" "вместо хэша, как раньше). – NolanDC

+0

Вы используете имя пользователя и пароль учетной записи gmail для входа в систему в случае администратора? – Murhari

+0

Я не уверен, что понял вопрос. Мы вообще не используем учетную запись gmail. – NolanDC