2012-01-28 19 views
9

के माध्यम से नए उपयोगकर्ताओं को बनाना मैं JSON के माध्यम से एक नया उपयोगकर्ता साइनअप करना चाहता हूं लेकिन मुझे एक अवैध प्रामाणिकता टोकन त्रुटि मिलती है।रेल/देवता - जेसन अनुरोध

मैं सभी नियंत्रक के लिए जाली जांच को चालू नहीं करना चाहता हूं। ऐसा करने के लिए पंजीकरण नियंत्रक को ओवरराइड करने के बारे में कोई सुझाव?

Routing Error 
uninitialized constant Api::MobileRegistrationsController 

उत्तर

0

आप अपनी खुद की नियंत्रक buil सकता है कि एक वसीयत से प्राप्त नहीं करता है: मैं कोई त्रुटि मिलती है

Whitney::Application.routes.draw do 
    resources :apps 
    devise_for :users 
    namespace :api do 
    resources :tokens, :only => [:create, :destroy] 
    resources :MobileRegistrations, :only => [:create] 
    end 

:

class Api::MobileRegistrationsController < Devise::RegistrationsController 
    skip_before_filter :verify_authenticity_token 
    respond_to :json 
    def create 
    super 
    end 
end 

मार्गों:

यहाँ मेरी कोड है नियंत्रक।

def UserSignupApiController < ApplicationController 
    skip_before_filter :authenticate_user! 
    respond_to :json 
    def create 
    @user = User.create(params[user]) 
    respond_with(@user) 
    end 
end 

मुझे लगता है कि आपको यह विचार मिलता है। आप बस अपने उपयोगकर्ता को तुरंत चालू करें जैसे आप Rails console में करेंगे। मैं इस तरह के अभ्यास की सिफारिश नहीं करता हालांकि

3

मैं आपको इस तरह से प्रोत्साहित नहीं कर सकता, क्योंकि आपका ऐप सीएसआरएफ हमलों के लिए कमजोर होगा।

एक अच्छा संसाधन CSRF को समझने के लिए: Understanding the Rails Authenticity Token

आप बल्कि अपने पोस्ट अनुरोध में authenticity_token शामिल होना चाहिए। यह इतने पर कुछ सवाल में चर्चा की है, वहाँ की तरह (सभी जवाब पढ़ने के लिए): rails - InvalidAuthenticityToken for json/xml requests

विचार:

  1. <%= form_authenticity_token %>

  2. साथ टोकन प्राप्त करने के लिए एक authenticity_token पोस्ट परम जोड़ें अपने टोकन के साथ अनुरोध करें।

आप यूआरआई द्वारा परम पार कर लेते हैं, टोकन मान इनकोडिंग के लिए मत भूलना:

url += "&authenticity_token=" + encodeURIComponent(<%= form_authenticity_token %>); 
0

अपने त्रुटि के लिए

Routing Error uninitialized constant Api::MobileRegistrationsController

यह दर्शाता है कि आपके नियंत्रक में नहीं है सही फ़ोल्डर क्योंकि आप

namespace :api do 
    resources :tokens, :only => [:create, :destroy] 
    resources :MobileRegistrations, :only => [:create] 
    end 

आप नियंत्रकों/api फ़ोल्डर में अपने MobileRegistrations लगाने की जरूरत का उपयोग कर रहे हैं। या आप

scope "/api" do 
    resources :MobileRegistrations, :only => [:create] 
end 
का उपयोग कर सकते हैं