Как аутентифицировать пользователя с помощью warden / devise индивидуально? - PullRequest
2 голосов
/ 01 августа 2011

Это приложение Rails 3.0 с Mongoid в качестве ODM.Ниже приводится модель пользователя, в которой установлено устройство.

class User
  include Mongoid::Document

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

  field :email
  field :username
  field :loginable_token

end

Я создаю API.Итак, для аутентификации я хотел аутентифицировать пользователей с помощью: электронной почты и: пароля.С графическим интерфейсом все нормально и работает.

Теперь я хочу реализовать его через API, поэтому я создал отдельный маршрут /api_login.json, который выполняет действие login с параметрами {"username"=>"kapil@gmail.com", "password"=>"sachin", "action"=>"login", "controller"=>"api/v1/accounts", "format"=>"json"}

Когда я пытаюсь аутентифицироваться с помощьюwarden.authenticate!(:scope => :user) метод до sign_in, он взрывается со следующей обратной трассировкой.

(rdb:1) l
[3, 12] in /Users/sts-151sts-151/Dev/cloudfactory/app/controllers/api/v1/accounts_controller.rb
  3      respond_with(@current_account)    
  4    end
  5    
  6    def login
  7      debugger
=> 8      resource = warden.authenticate!(:scope => :user)
  9       sign_in(:user, resource)
  10      if user == nil
  11        
  12        respond_with(User.account.apps.first)
(rdb:1) p params
{"username"=>"kapil@gmail.com", "password"=>"sachin", "action"=>"login", "controller"=>"api/v1/accounts", "format"=>"json"}
(rdb:1) rs = warden.authenticate!(:scope => :user)
*** Unknown command: "rs = warden.authenticate!(:scope => :user)".  Try "help".
(rdb:1) p rs = warden.authenticate!(:scope => :user)

 1) /api/v1/lines POST send back the default app
    Failure/Error: last_response.status.should eql(200)

expected 200
    got 401

(compared using eql?)

    # ./spec/api/v1/accounts_spec.rb:46:in `block (3 levels) in <top (required)>'

Тест по умолчанию rack-test way.

Какой правильный способ аутентификации?

...