Obserwuję ten doskonały artykuł do konfiguracji część uwierzytelnianie moich szyn (3,2) API:
http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/Reklamowe uwierzytelniania z Rails i Opracować
Zrobiłem następujący krok:
-Dodano opracować do Gemfile
wyposażonym w technologię opracować dla modelu użytkownika i pobiegł migracje wymagane
-Mój modelu użytkownik ma
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
jak również token_authenticable w bazie danych (poprzez migrację).
-Subclassed się RegistrationController z:
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
-W routes.rb mam:
devise_for :users, :controllers => {:registrations => "registrations"}
CREATION USER
chciałbym następującą prośbę do tworzenia użytkownika i odesłanie klucza uwierzytelniającego:
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"user":{"email":"[email protected]", "password":"pass"}}' 'http://localhost:3000/users.json
Rozumiem, że logika powinna iść w "create" metody kontrolera rejestracji (który powinien utworzyć użytkownika i zalogować go w tym samym czasie). Myślę, że powinienem być w błędzie, ponieważ wiadomość dostałem w zamian to:
{"error":"You need to sign in or sign up before continuing."}
Jaki jest brakujący kawałek mieć nowego użytkownika tworzony i rejestrowane? Czy nie jest POST do users.json zmapowany do RegistrationController # create?
logowania użytkownika
Również chciałbym następującą prośbę do zalogowania użytkownika w (wysyłanie mu jego authentification_token raz zostały sprawdzone login/hasło)
curl -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"user":{"email":"[email protected]","password":"pass"}}' 'http://localhost:3000/users.json
Chyba logika powinna iść w "aktualizacji" metody RegistrationController, ale nie jest w 100% pewna. Po zakończeniu logowania dodam uwierzytelnienie tokena, aby chronić tworzenie/wyświetlanie niektórych innych modeli.
UPDATE
Kiedy wydawać:
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'
mam następujący komunikat:
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
jakieś pomysły dlaczego użytkownik nie jest tworzony i podpisane i dlaczego nie authentication_token jest zwracany?
Jeśli chcesz, aby użytkownik został utworzony przed uwierzytelnieniem, dodaj ten kod. Devise tego nie robi. –