9

हमारे उत्पादन सर्वर अब कई महीनों के लिए अमान्य प्रामाणिकता टोकन त्रुटियों का उत्पादन कर रहा है। त्रुटियों को लगभग सभी रूपों (PUT | POST | DELETE) अनुरोध भेजने पर उत्पादित किया जाता है। कभी-कभी त्रुटि होती है, कभी-कभी वे नहीं करते हैं। ऐसा लगता है कि ऐसा क्यों नहीं होता है कि कोई कविता या कारण नहीं है। त्रुटि स्वयं अक्सर नहीं होती है लेकिन यह हमारे लिए चिंता का विषय है। नीचे एक उदाहरण है जो एक सामान्य रूप है जो इस त्रुटि को दिखता है।रैंडम अमान्य प्रामाणिकता डीबगिंग

<form class="button_to" method="post" action="/lesson_progress_trackers/333"> 
    <input type="hidden" name="_method" value="patch"> 
    <input class="finish-lesson-button" type="submit" value="Done!"> 
    <input type="hidden" name="authenticity_token" value="Qd3FsJZY2UXR9vahuFmaY5rrqA+J5xzGpl4cGI2Vwerx8PZPQtDMugz6oqoe3iviC+/U5zTYPdeX3apwbap09E=="> 
    <input type="hidden" name="completed" value="true"> 
</form> 

यहां तक ​​कि मैंने अभी तक जो खोजा है।

  1. हम टर्बोलिंक 2.5.3 का उपयोग करते हैं (हमने इसे एक वर्ष में अपडेट नहीं किया है)।
  2. अमान्य टोकन त्रुटि के हर मामले में, उपयोगकर्ता ने सर्वर पर एक प्रामाणिकता टोकन पारित किया, यह अभी अमान्य हो गया।
  3. वर्तमान में हम अपने आवेदन नियंत्रक में protect_from_forgery with: :exception का उपयोग करते हैं।
  4. कई महीनों पहले उत्पादन में नए कोड का एक गुच्छा धक्का देने पर त्रुटियां दिखाई देने लगीं। यह नया कोड सैकड़ों फाइलों को फैलाता है लेकिन अब तक मुझे इस कोड के लिए प्रासंगिक कोड में कुछ भी नहीं मिला है।
  5. त्रुटि किसी भी प्रकार के ब्राउज़र और डिवाइस पर हो सकती है।
  6. बढ़ते यातायात और अमान्य ऑथ टोकन के बीच कोई सहसंबंध नहीं है।
  7. उपयोगकर्ता किसी भी देश से आ सकते हैं।
  8. ये इन मुद्दों का सामना करने वाले बॉट्स नहीं हैं। हमारे पास एक सहयोगी भी इस त्रुटि का अनुभव करता था, हालांकि उन्हें याद नहीं आया कि उन्होंने इसे बनाने के लिए क्या किया था।
  9. उपयोगकर्ता अपेक्षित व्यवहार की अपेक्षा करते हैं तो सामान्य का पालन करें। वे इरादे के रूप में ऐप का उपयोग कर रहे हैं। मैंने इसे समाप्त करने के लिए अपने क्लिक और रिकॉर्ड किए गए व्यवहार इतिहास को देखा।

आखिरकार मैं यह समझना चाहता हूं कि इसे कैसे हल किया जाए। मेरा पहला कदम सफलतापूर्वक त्रुटि को पुन: उत्पन्न करना है, लेकिन मैं यह भी नहीं कर सकता। मेरा सवाल यह है: यह जानने के लिए कि मैं इसका क्या कारण बना रहा हूं, मुझे अपने रास्ते पर लाने के लिए क्या कर सकता हूं? मैं विकल्पों से बाहर चला रहा हूँ। धन्यवाद!

+0

हाँ, मैंने ऐसा किया। यह वास्तविक उपयोगकर्ताओं के लिए हो रहा है। ये बॉट नहीं हैं। मैंने जो पैटर्न खोजे हैं वे सामान्य उपयोगकर्ता व्यवहार हैं। वे क्या कर रहे हैं में असामान्य कुछ भी नहीं है। मैं यह कहने के लिए तैयार हूं कि यह व्यवहार की उम्मीद है। यही कारण है कि यह बहुत डरावना है। – jason328

+0

क्या आप इस बात से इनकार कर सकते हैं कि कुछ भी समाप्त हो गया है? कुकीज़ केवल एक चीज हैं, यह कुछ समय-संबंधित तुलना, सर्वर में गलत समय, डेटाबेस फ़ील्ड हो सकती है जो विशिष्ट समय या उसके जैसा कुछ भी उम्मीद करती है। – Smar

+0

मुझे ऐसा नहीं लगता? क्या आप अपने प्रश्न को थोड़ा सा स्पष्ट कर सकते हैं। – jason328

उत्तर

1

डुनो अगर यह उपयोगी होने में बहुत देर हो चुकी है, लेकिन मुझे एक ही समस्या थी।

  1. सुनिश्चित करें कि आप एप्लिकेशन
  2. प्रवेश पृष्ठ के लिए एक ब्राउज़र टैब खोलें से प्रस्थान हैं
  3. यह काफी देर तक बैठने के सत्र/CSRF टोकन समाप्त करने के लिए करते हैं (बनाओ: मैं द्वारा पुन: पेश करने में सक्षम था कई घंटे हो सकते हैं)
  4. साइन-इन पेज पर एक और टैब खोलें, और
  5. पुराने टैब पर वापस जाएं और फिर से लॉग इन करने का प्रयास करें - InvalidAuthenticityToken अपवाद होता है।

मुझे लगता है कि यह मेरे लिए हुआ क्योंकि दोनों टैबों ने एक सत्र साझा किया, सत्र जो नया टैब खोला गया था, बनाया गया था। हालांकि, पुराने टैब में अभी भी लॉगिन फॉर्म में पुराने सत्र से सीएसआरएफ टोकन था। जब नया सत्र कुकी और पुराना सीएसआरएफ टोकन एक साथ सबमिट किया गया था, तो वे मेल नहीं खाते और इसलिए त्रुटि फेंक दी गई।

मुझे यकीन नहीं है कि वास्तव में इसे कैसे ठीक किया जाए, त्रुटि को अधिक सुन्दर तरीके से संभालने के अलावा, ताकि उपयोगकर्ता को भ्रमित त्रुटि पृष्ठ दिखाई न दे।

बीटीडब्ल्यू, मैं तैयार कर रहा हूं, लेकिन मुझे नहीं लगता कि यह डेविस के लिए विशिष्ट है।

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