वसीयत मैं सेटअप करने के लिए इस उत्कृष्ट लेख मेरी रेल के authentification हिस्सा अनुसरण कर रहा हूँ (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 -Subclassed:
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"}
उपयोगकर्ता निर्माण
मैं निम्नलिखित अनुरोध बनाने के लिए करना चाहते हैं एक उपयोगकर्ता और प्रमाणीकरण_टोकन वापस भेजने के लिए:
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."}
बनाया है और लॉग इन नए उपयोगकर्ता के लिए गायब टुकड़ा क्या है? पंजीकरण नियंत्रक # के लिए मैप किए गए उपयोगकर्ताओं.जेसन को पोस्ट नहीं है?
उपयोगकर्ता लॉगिन
इसके अलावा, मैं निम्नलिखित अनुरोध
curl -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"user":{"email":"[email protected]","password":"pass"}}' 'http://localhost:3000/users.json
मुझे लगता है कि (उसे अपने authentification_token एक बार लॉगिन/पासवर्ड जाँच कर दिया है वापस भेजने) में एक उपयोगकर्ता लॉग ऑन करना चाहते हैं तर्क पंजीकरण नियंत्रक की "अद्यतन" विधि में जाना चाहिए, लेकिन इसके बारे में 100% निश्चित नहीं है। एक बार लॉगिन करने के बाद मैं कुछ अन्य मॉडलों के निर्माण/दृश्य की रक्षा के लिए टोकन प्रमाणीकरण जोड़ूंगा।
अद्यतन
जब मैं जारी करते हैं:
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 कोई भी विचार
वापस आ गया है?
यदि आप प्रमाणीकरण से पहले उपयोगकर्ता को बनाना चाहते हैं, तो आपको वह कोड जोड़ना चाहिए। देवता ऐसा नहीं करता है। –