2015-07-25 11 views
6

के साथ एंड्रॉइड ऐप से लार्वेल ऐप एक्सेस करें मैं लार्वेल फ्रेमवर्क को झुका रहा हूं, मैंने 5.0 संस्करण स्थापित किया है। मैं इसे जेसन एपीआई सेवा के लिए उपयोग करता हूं जो कुछ मार्गों को कॉल करने के बाद जेएसओएन आउटपुट देगा। यदि मैं ब्राउज़र से यूआरएल की आवश्यकता है तो यह बहुत अच्छी तरह से काम करता है। लेकिन जब मैं अपने एंड्रॉइड ऐप से एक्सेस करने का प्रयास कर रहा हूं तो यह त्रुटि देता है कि फ़ाइल को अपवाद नहीं मिला (java.io.filenotfoundexception)। लॉग की जांच के बाद मुझे पॉइंट मिला कि लार्वेल में टोकन मिस्चैच अपवाद की त्रुटि है। लार्वेल को संसाधनों तक पहुंचने के लिए सीएसआरएफ टोकन की आवश्यकता है। मेरे पास विकल्प है कि मैं उस प्रमाणीकरण को अक्षम कर सकता हूं लेकिन यह कम सुरक्षित तरीका प्रतीत होता है।सीएसआरएफ टोकन

किसी भी तरह से मैं अपने एंड्रॉइड ऐप से लार्वेल ऐप तक अन्य ऐप से नहीं पहुंच सकता हूं? क्या हम एंड्रॉइड ऐप से सीएसआरएफ कुंजी निर्दिष्ट कर सकते हैं?

+0

क्या मेरा उत्तर आप क्या देख रहे हैं? इसे सुधारने के लिए मैं कुछ भी कर सकता हूं? –

उत्तर

10

यदि आप सीएसआरएफ टोकन को अक्षम नहीं करना चाहते हैं, तो आपको एक अनुरोध में सीएसआरएफ को पुनः प्राप्त करने की आवश्यकता होगी, फिर अपने POST अनुरोध के साथ पुनर्प्राप्त टोकन पास करें।

// Create a new HttpClient and Post Header 
HttpClient httpclient = new DefaultHttpClient(); 

// Get the CSRF token 
httpClient.execute(new HttpGet("http://www.yoursite.com/")); 
CookieStore cookieStore = httpClient.getCookieStore(); 
List <Cookie> cookies = cookieStore.getCookies(); 
for (Cookie cookie: cookies) { 
    if (cookie.getName().equals("XSRF-TOKEN")) { 
     CSRFTOKEN = cookie.getValue(); 
    } 
} 

// Access POST route using CSRFTOKEN 
HttpPost httppost = new HttpPost("http://www.yoursite.com/your-post-route"); 

try { 
    // Add your data 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("_token", CSRFTOKEN)); 
    nameValuePairs.add(new BasicNameValuePair("stringdata", "Hello!")); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

    // Execute HTTP Post Request 
    HttpResponse response = httpclient.execute(httppost); 

} catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
} 
+1

लेकिन मुझे लगता है कि कोई एंड्रॉइड ऐप मेरे एपीआई – ddw147

+2

तक पहुंच सकता है, सही है, जो आपके ऐप का उपयोग कर सकता है, एक "प्रमाणीकरण/प्रमाणीकरण" समस्या है, सीएसआरएफ समस्या नहीं है। सीएसआरएफ केवल सत्यापित करता है कि एक पोस्ट अनुरोध उसी क्लाइंट से आता है जिसने पूर्व जीईटी अनुरोध किया है, यह इस बात का उपयोग नहीं करता है कि साइट का उपयोग कौन कर सकता है। क्या मैंने आपके प्रश्न को याद किया? –

+0

ठीक है अब मुझे मिल गया, उत्तर – ddw147

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