Я следую за эту прекрасную статью и настройку аутентификации части моих рельсов (3.2) API:
http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/Токен аутентификации с Rails и Придумайте
Я сделал следующий шаг:
-Добавлена DEViSE в Gemfile
-Enabled изобрести для модели пользователя и побежал миграциях требуется
-Мой модель пользователя
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 в базе данных (через миграцию).
-Subclassed в 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
-В routes.rb, у меня есть:
devise_for :users, :controllers => {:registrations => "registrations"}
USER СОЗДАНИЯ
Я хотел бы следующий запрос, чтобы создать пользователю и отправить обратно authentification_token:
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"user":{"email":"[email protected]", "password":"pass"}}' 'http://localhost:3000/users.json
Мое понимание заключается в том, что логика должна идти в методе «создания» контроллера регистрации (который должен создать пользователя и войти в него одновременно). Я думаю, что я должен быть неправильным, как сообщение, которое я получил в ответ является:
{"error":"You need to sign in or sign up before continuing."}
Что недостающий кусок, чтобы иметь нового пользователя созданы и запротоколированы? Не является POST для пользователей. Json сопоставлен с RegistrationController # create?
ВХОД ДЛЯ ПОЛЬЗОВАТЕЛЕЙ
Кроме того, я хотел бы следующий запрос для входа пользователя в (отправить его обратно его authentification_token когда Логин/пароль был проверен)
curl -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"user":{"email":"[email protected]","password":"pass"}}' 'http://localhost:3000/users.json
я думаю логика должна идти в «обновлении» метода RegistrationController, но не на 100% уверен в этом. После того, как логин будет выполнен, я добавлю аутентификацию токена, чтобы защитить создание/просмотр некоторых других моделей.
UPDATE
Когда я выдаю:
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"user":{"email":"[email protected]", "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 protected]", , "password"=>"[FILTERED]", "phone"=>"1234567890"}, "registration"=>{"user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "phone"=>"1234567890"}, "action"=>"create", "controller"=>"registrations", "format"=>"json"}}
WARNING: Can't verify CSRF token authenticity
Completed 401 Unauthorized in 1ms
Любые идеи, почему пользователь не создан и подписан и почему не authentication_token возвращается?
Если вы хотите, чтобы пользователь был создан до аутентификации, вы должны добавить этот код. Разработчик этого не делает. –