2015-06-10 3 views
8

के साथ लैरावेल एक्स-सीएसएफआर-टोकन विसंगति लैरवेल के साथ निर्मित मेरे आरईएसटी एपीआई से बात करने का प्रयास करें। लेकिन टोकन के साथ कॉल को टोकन मेल के कारण खारिज कर दिया गया है। मुझे लगता है कि मुझे हेडर में सीएसआरएफ टोकन शामिल करने की आवश्यकता है। लेकिन क्या मुझे एन्क्रिप्टेड की ज़रूरत है? जब मैं इस टोकन को सम्मिलित करता हूं तो मुझे अभी भी त्रुटि मिलती है कि टोकन मेल नहीं है।POSTMAN

मैं का उपयोग करके अपनी टोकन प्राप्त:

$encrypter = app('Illuminate\Encryption\Encrypter'); 
    $encrypted_token = $encrypter->encrypt(csrf_token()); 
    return $encrypted_token; 

लेकिन यह हर ताज़ा पर बदलने के लिए माना जाता है?

उत्तर

8

आप रूपों का उपयोग कर नहीं कर रहे हैं - उदाहरण के लिए एक एपीआई के लिए - तुम यहाँ https://gist.github.com/ethanstenis/3cc78c1d097680ac7ef0 चरणों का पालन कर सकते हैं:

मूलतः

, अपने ब्लेड या टहनी हैडर

के लिए निम्न जोड़ने
<meta name="csrf-token" content="{{ csrf_token() }}"> 

स्थापित डाकिया इंटरसेप्टर यदि पहले से ही स्थापित नहीं है, और फिर

चालू, आपके ब्राउज़र एल में साइट (आप अधिकृत होना पड़ेगा) में ओग, और या तो निरीक्षण तत्व या स्रोत देखें टोकन

डाकिया में पुनः प्राप्त करने, तैयार हो जाओ/पोस्ट आदि के रूप में की जरूरत है, और अपने शीर्षक में एक नया जोड़ी बनाने

X-CSRF-TOKEN  tokenvaluetobeinserted235kwgeiOIulgsk 

कुछ लोग एपीआई का परीक्षण करते समय सीएसआरएफ टोकन को बंद करने की सलाह देते हैं, लेकिन फिर आप वास्तव में परीक्षण नहीं कर रहे हैं।

यदि आपको लगता है कि आपको अभी भी त्रुटियां हैं, तो preview का उपयोग करके प्रतिक्रिया वापस जांचें क्योंकि लैरवेल उनके त्रुटि संदेशों के साथ काफी स्पष्ट है। यदि कुछ भी वापस नहीं आ रहा है, तो अपने php_error.log (जिसे कभी भी कहा जाता है) देखें।

+1

यदि आवश्यक हो तो आप सीएसआरएफ के लिए एक यूनिट टेस्ट लिखते हैं और अन्य परीक्षणों के लिए आप इसे बंद कर सकते हैं ... आप कुछ ऐसा दावा करते हैं जैसे "मैं कुछ व्यवस्थापक कार्यक्षमता ए का परीक्षण करना चाहता हूं, लेकिन मुझे लॉग इन करने की आवश्यकता है इसलिए मैंने भी परीक्षण किया है जब मैं कार्यक्षमता परीक्षण कर रहा हूं तो सुविधा में लॉग इन करें "। प्रत्येक पोस्ट/पैच/पॉट के साथ सीएसआरएफ का परीक्षण नहीं करना ठीक है - अगर आपके पास सीएसआरएफ के लिए सख्ती से यूनिट परीक्षण है। – Kyslik

3

हां यह हर ताज़ा बदल देता है। आपको इसे दृश्य में रखना चाहिए और जब आप इसे पोस्ट करते हैं तो इसे "_token" POST var के मान के रूप में भेजा जाना चाहिए।

तुम सिर्फ एक मानक पोस्ट उपयोग कर रहे हैं बस रूप से जोड़ें:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 

आप AJAX का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप _token का मूल्य हड़पने और अनुरोध के साथ इसे पारित कर सकते हैं।

REF: http://laravel.com/docs/5.1/routing#csrf-protection

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