2012-07-01 10 views
5

तो मैं एंड्रॉइड के लिए एक ऐप बना रहा हूं जिसके लिए वेब बैकएंड की आवश्यकता है। रेलवे पर रूबी में वेबसाइट बनाई जा रही है। इसमें एक ग्राहक का सामना करना पड़ रहा है (सुंदर HTML पेज) लेकिन मैं यह भी चाहता हूं कि यह JSON के माध्यम से मेरे एंड्रॉइड ऐप को जानकारी प्रदान करने में सक्षम हो। हालांकि, मैं नहीं चाहता कि पूरी दुनिया इस JSON को प्राप्त करने में सक्षम हो क्योंकि इसमें कुछ संभावित खतरनाक जानकारी शामिल है। मैं JSON- स्वरूपित पृष्ठों को कैसे लॉक कर सकता हूं और फिर भी उन्हें एंड्रॉइड ऐप से एक्सेस कर सकता हूं?मेरे ऐप के लिए एक सुरक्षित रेल रीस्ट एपीआई कैसे बनाएं?

रिकॉर्ड के लिए, मैं रेल 3.1 has_secure_password ऑन-साइट उपयोगकर्ता प्रमाणीकरण के लिए उपयोग कर रहा हूँ, और मैं कुछ मार्गों कि HTML अनुरोधों के लिए खुला लेकिन JSON के लिए बंद कर दिया हैं करना चाहते हैं (उदाहरण के लिए, /users यूआरएल सुलभ होना चाहिए एचटीएमएल के रूप में लेकिन JSON के रूप में यह केवल कुछ ऐप के साथ मेरे ऐप से ही सुलभ होना चाहिए)।

क्या ऐसा करने का कोई तरीका है, या क्या एपीआई को एक अलग ऐप होना चाहिए (जो डीबी सेटअप आदि के साथ असुविधाजनक होगा)?

वर्गीकरण: असल में मैं जो करना चाहता हूं वह मेरे रेल ऐप से एक सुरक्षित टोकन-आधारित JSON API बना रहा है, और मैं डेविस या कुछ ऐसा नहीं करना चाहता जो मुझे बदलने के लिए मजबूर करेगी कि मैं पहले से ही अपना स्टोर कैसे कर रहा हूं उपयोगकर्ता/पास जानकारी।

उत्तर

2

आप जिस रेल का उपयोग कर रहे हैं उसके आधार पर, काम का हिस्सा पहले से ही respond_to विधि के साथ किया गया है, जो आपको उसी यूआरएल के लिए जेएसओएन और एचटीएमएल दोनों की सेवा करने की अनुमति देता है। अब, JSON पहुँच को लॉक करने के लिए, आप एक विधि है कि एप्लिकेशन का उपयोग की जाँच करता है, निर्धारित कर सकते हैं, और यह कहते हैं कि जब भी JSON उत्तर ऊपर की सेवा

def with_access_check() 
    if allowed # Or any verification you want. 
    yield 
    else 
    # Raise a 403 maybe? 
    end 
end 

# Then in every method that needs a check: 
respond_to :json { with_access_check { render :json => @stuff } } 

अंत में जब तक आप json और html पर बहुत अलग डेटा सेवा कर रहे हैं विचार (जो अजीब है यदि आप दोनों के लिए एक ही यूआरएल का उपयोग कर रहे हैं) मान लें कि कुछ भी हमलावर/दुर्भावनापूर्ण उपयोगकर्ता को आपके HTML से उसी डेटा को निकालने से रोक नहीं सकता है।

संबंधित मुद्दे