Аутентификация токена с помощью Rails и Devise

Я следую этой отличной статье, чтобы настроить часть аутентификации моего API rails (3.2):
http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/

Я сделал следующий шаг:

-Добавлено устройство в Gemfile

-Включено устройство для модели пользователя и выполнены необходимые миграции

-Моя модель пользователя

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
  devise :token_authenticatable

  attr_accessible :email, :authentication_token, :password, :password_confirmation, :remember_me
end

, а также token_authenticable в базе данных (через миграцию).

- Подкласс RegistrationController с:

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => " {controller_path}#new")
    sign_in(resource_name, resource)
    current_user.reset_authentication_token!
    respond_with resource, :location => after_sign_in_path_for(resource)
  end

  def update
    super
  end
end

- В маршрутах.rb, у меня есть:

devise_for :users, :controllers => {:registrations => "registrations"}

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ

Я бы хотел, чтобы следующий запрос создал пользователя и отправил обратно authentification_token:

curl -H "Accept: application/json" -H "Content-type: application/json"  -X POST -d '{"user":{"email":"email@gmail.com", "password":"pass"}}' 'http://localhost:3000/users.json

Насколько я понимаю, логика должна идти в методе «создать» контроллер регистрации (который должен создать пользователя и одновременно войти в систему). Думаю, я ошибаюсь, так как в ответ я получил следующее сообщение:

{"error":"You need to sign in or sign up before continuing."}

Что недостает для создания и регистрации нового пользователя? Разве POST для users.json не сопоставлен с RegistrationController#create ?

ВХОД ПОЛЬЗОВАТЕЛЯ

Кроме того, я бы хотел, чтобы следующий запрос для входа пользователя в систему (отправка ему его authentification_token после проверки логина/пароля)

curl -H "Accept: application/json" -H "Content-type: application/json"  -X GET -d '{"user":{"email":"email@gmail.com","password":"pass"}}' 'http://localhost:3000/users.json

Думаю, логика должна идти в " метод RegistrationController, но не уверен в этом на 100%. После входа в систему я добавлю аутентификацию токена, чтобы защитить создание/просмотр некоторых других моделей.

ОБНОВЛЕНИЕ

Когда я выдаю:

curl -H "Accept: application/json" -H "Content-type: application/json"  -X POST -d '{"user":{"email":"email@gmail.com", "password": "mypass", "phone":"1234567890"}}' 'http://localhost:3000/users.json'

Я получил следующее сообщение:

Started POST "/users.json" for 127.0.0.1 at 2012-03-11 20:50:05 +0100
Processing by RegistrationsController#create as JSON
Parameters: {"user"=>{"email"=>"email@gmail.com", , "password"=>"[FILTERED]", "phone"=>"1234567890"}, "registration"=>{"user"=>{"email"=>"email@gmail.com", "password"=>"[FILTERED]", "phone"=>"1234567890"}, "action"=>"create", "controller"=>"registrations", "format"=>"json"}}
WARNING: Can't verify CSRF token authenticity
Completed 401 Unauthorized in 1ms

Любые идеи, почему пользователь не создан и не вошел в систему, и почему аутентификационный_токен не возвращается?

5
задан Luc 11 March 2012 в 20:05
поделиться