2012-08-16 17 views
8

मैं पेपैलएडैप्टिव का उपयोग कर रहा हूं। यह ipn_notification ठीक से भेजता है। ipnNotification कार्रवाई विधि निम्नलिखित के रूप में है -रेलों में सीएसआरएफ टोकन प्रामाणिकता को सत्यापित नहीं कर सकता

def ipn_notification 
    ipn = PaypalAdaptive::IpnNotification.new 
    ipn.send_back(request.raw_post.to_json) 

    print "=====================request.raw_post#{request.raw_post}==============" 

    if ipn.verified? 
     PaymentMailer.notify_unknown(request.raw_post).deliver 
    else 
     logger.info "IT DIDNT WORK" 
    end 
    render :nothing => true 
end 

लेकिन यह त्रुटि लौटा रहा है

WARNING: Can't verify CSRF token authenticity rails 

इस समस्या के लिए किसी भी मदद करते हैं।

उत्तर

18

अपने नियंत्रक में:

skip_before_filter :verify_authenticity_token, :only => [:ipn_notification] 

जल्दी करने के लिए और वितरित -1 (एक महत्वपूर्ण हिस्सा लंघन: यह ग्राहक से एक पोस्ट कॉल ... नहीं है): पढ़ने लोगों के लिए

  • हाँ यह एक सुरक्षा छोड़ देता है ... बाद में पढ़ें ...

  • हाँ, बाहरी वेबसाइट POST अनुरोध

  • के लिए यह एकमात्र तरीका है
  • हाँ यह सुरक्षित है: आप पेपैल या एक जैसे कॉल प्राप्त करते समय स्पष्ट रूप से पैरा और चाबियाँ जांचते हैं।

+0

क्या इसका उत्तर नहीं है? – apneadiving

+0

यह काम कर रहा है धन्यवाद। – vajapravin

+0

-1 समझाया गया है जब – apneadiving

12

सुरक्षा

समझौता किए अपने ajax अनुरोध में हेडर के रूप में CSRF टोकन मान भेजने के बिना इस समस्या के लिए सही समाधान।

var csrfToken = $("meta[name='csrf-token']").attr("content"); 
$.ajaxSetup({ 
    headers: { 
    'X-CSRF-Token': csrfToken 
    } 
}); 
+1

यह बहुत बेहतर दृष्टिकोण है .... – Magnum

+1

@Magnum बेहतर दृष्टिकोण? शायद, हां, यह सवाल का जवाब नहीं देता है - 1 घंटे पहले – apneadiving

+0

अपनाने वाला यही कारण है कि मैंने कहा कि यह 'बेहतर दृष्टिकोण' नहीं है 'उत्तर' – Magnum

4

अपने application.js

//= require jquery_ujs 

और कोशिश निम्नलिखित पंक्ति जोड़ दें।

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