"पेज निष्क्रियता के कारण समाप्त हो गया है" - लारवेल 5.5


111

मेरा रजिस्टर पेज CsrfToken ( {{ csrf_field() }}) फॉर्म में मौजूद के साथ ठीक से दिखा रहा है ।

प्रपत्र HTML

<form class="form-horizontal registration-form" novalidate method="POST" action="{{ route('register') }}">
        {{ csrf_field() }}
        ....
</form>

मैं उपयोगकर्ताओं के लिए इनबिल्ट प्रमाणीकरण का उपयोग कर रहा हूं। मार्गों और पुनर्निर्देश को छोड़कर कुछ भी नहीं बदला है।

जब मैं फॉर्म जमा करता हूं (बस पुनः लोड करने के बाद भी), यह देता है कि निष्क्रियता के कारण पृष्ठ समाप्त हो गया है। कृपया रिफ्रेश करें और पुनः प्रयास करें। त्रुटि।

मेरा होना मुझे एक बहुत छोटी सी बात याद आ रही है। लेकिन यह निश्चित नहीं है कि यह क्या है। कोई मदद?

अपडेट करें

मुद्दा मिल गया। सत्र ड्राइवर को सरणी पर सेट किया गया था। इसे फाइल में बदला और अब त्रुटि हो गई है। लेकिन अगर मैं सरणी का उपयोग करूं तो क्या गलत है?


स्टोरेज के साथ कुछ करना पड़ सकता है। यदि आप फ़ाइल आधारित सत्रों का उपयोग कर रहे हैं तो यह टोकन के संबंध में सत्र डेटा संग्रहीत करता है।
डेवॉन

1
मुद्दा मिल गया। सत्र ड्राइवर को सेट किया गया था array। इसे फाइल में बदला और अब त्रुटि हो गई है। लेकिन अगर मैं सरणी का उपयोग करूं तो क्या गलत है?
सौगता बोस


1
लार्वा के नए संस्करण के लिए, समस्या को हल करने के लिए @csrf का उपयोग करें।
वुओंग ट्रान

जवाबों:


164

यदि आप सीधे खोज से इस उत्तर पर आ रहे हैं , तो सुनिश्चित करें कि आपने {{ csrf_field() }}ओपी के साथ अपने फॉर्म में सीएसआरएफ टोकन पहले ही जोड़ लिया है ।


यदि आपके पास अपना सत्र ड्राइवर फाइल करने के लिए सेट है:

स्टोरेज के साथ कुछ करना पड़ सकता है। यदि आप फ़ाइल आधारित सत्र का उपयोग कर रहे हैं तो यह टोकन के संबंध में सत्र डेटा संग्रहीत करता है। के साथ सत्यापित किया जा सकता हैis_writable(config('session.files'))


ओपी के लिए, सत्र ड्राइवर को सरणी में सेट किया गया था। एरियर केवल परीक्षण के लिए है। चूंकि डेटा कायम नहीं है, इसलिए यह अगले अनुरोध पर टोकन की तुलना करने में सक्षम नहीं होगा।

सरणी ड्राइवर का उपयोग परीक्षण के दौरान किया जाता है और सत्र में संग्रहीत डेटा को बनाए रखने से रोकता है।

https://laravel.com/docs/5.5/session#configuration


Config / session.php की जाँच करें

अंत में, एक मुद्दा जो मेरे पास था, हमारे पास एक प्रोजेक्ट था जिसमें सत्र डोमेन और सुरक्षित सेटिंग्स कॉन्फ़िगर / सत्र में हैं। पीपीपी लेकिन विकास साइट HTTPS (SSL / TLS) का उपयोग नहीं कर रहा था। इस सत्र के बाद से यह सामान्य त्रुटि हुई। सेक्योर डिफ़ॉल्ट रूप से सही पर सेट किया गया था।


3
ठीक। लेकिन अभी यह विकास में है। इसलिए यदि मैं सरणी का उपयोग करता हूं, तो यह मुझे वह त्रुटि क्यों दे रहा है?
सौगता बोस

@SougataBose परीक्षण विकास नहीं है। सरणी डेटा कायम नहीं है ...
Devon

यही कारण है कि एक को ठीक से डॉक्स के माध्यम से जाना चाहिए .. :)
सौगात बोस

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

1
मेरे पास सत्रों के साथ समान मुद्दा था लेकिन परीक्षण के संबंध में। जब मैं Carbon::setTestNow($time);परीक्षणों में उपयोग कर रहा था, तब मैं इसे साफ़ नहीं कर रहा था Carbon::setTestNow();
riotCode

77

मैं लारवेल 5.5 में इसी मुद्दे पर भाग गया। मेरे मामले में, GET से POST तक का मार्ग बदलने के बाद ऐसा हुआ। मुद्दा यह था कि जब मैंने पोस्ट को स्विच किया तो सीएसआरएफ टोकन पास करना भूल गया।

आप कॉल करके अपने फॉर्म में CSRF टोकन पोस्ट कर सकते हैं:

 {{ csrf_field() }}

या एप्लिकेशन / Http / Middleware / VerifyCsrfToken.php में अपने मार्ग को बाहर करें

 protected $except = [
        'your/route'
    ];

2
csrf_field()फार्म में मौजूद है। स्वीकृत उत्तर समस्या का वर्णन करता है। धन्यवाद।
सौगात बोस

1
मेरे मामले में, मुझे एक 3rd पार्टी से एक POST मिल रहा था, इसलिए csrf_field () को जोड़ना एक विकल्प नहीं था। चूंकि CSRF मेरे मामले में कोई कारक नहीं था, इसलिए इस मार्ग के अपवाद को जोड़ने से समस्या हल हो गई। धन्यवाद।
फैबियो ड्यूक सिल्वा

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

1
कृपया CSRF सत्यापन अक्षम न करें! यह संरक्षण के लिए बहुत महत्वपूर्ण है। ठीक से टोकन भेजना सीखें और अपने लॉग इन उपयोगकर्ताओं को दुर्भावनापूर्ण जावास्क्रिप्ट से सुरक्षित रखें जो उनकी ओर से कार्रवाई प्रस्तुत कर सकते हैं।
डेवोन



6

मेरे केस को हल कर दिया गया SESSION_DOMAIN, मेरी लोकल मशीन में सेट करना पड़ा xxx.localhost। यह उत्पादन के साथ टकराव पैदा कर रहा था SESSION_DOMAIN, xxx.comजो सीधे सत्र में सेट किया गया था। config फाइल।


आप किस सत्र चालक का उपयोग कर रहे थे? fileया cookie?
कीटलडॉग

4

कुछ जानकारी कुकी में संग्रहीत होती है जो विकास में लार्वा के पिछले संस्करणों से संबंधित होती है। तो यह csrf उत्पन्न टोकन के साथ विरोध कर रहा है जो कि दूसरे के संस्करणों द्वारा उत्पन्न होते हैं। कुकी को साफ़ करें और कोशिश करें।


क्या आप <input type="hidden" name="_token" value="Umr1AlG3sScdUWGtMoHcQPPKASsR7qsd5ZE1H3Xv">उत्पन्न HTML में कोड की तरह देख सकते हैं ?
सुरेश वेलुसामी

यह वहाँ है। मुद्दा मिल गया। सत्र ड्राइवर को सरणी पर सेट किया गया था। इसे फाइल में बदला और अब त्रुटि हो गई है।
सौगता बोस

4

उन लोगों के लिए जो अभी भी समस्या है और कुछ भी मदद नहीं की। Php.ini mbstring.func_overload पैरामीटर पर ध्यान दें। इसे 0. पर सेट किया जाना है और UTF-8 पर mbstring.internal_encoding सेट किया जाना है। मेरे मामले में यह एक समस्या थी।


आपका बहुत बहुत धन्यवाद! आपके उत्तर ने मेरे मस्तिष्क को दुर्घटनाग्रस्त होने से बचा लिया)
रुस्तमबेक कालियेव ५'१

3

मैं भंडारण की अनुमति बदल देता हूं और त्रुटि हो गई थी। ऐसा लगता था कि अनुमति की कमी मुद्दा था।

sudo chmod -R 775 storage/

2
ऐसी खुली अनुमतियों का पुनरावर्ती उपयोग करके सावधानी बरतें। मैं अत्यधिक फ़ाइलों के लिए 775 के खिलाफ की सिफारिश करेंगे। निर्देशिका के लिए 755 और फ़ाइलों के लिए 644 आदर्श है।
देवन

3

@csrfफॉर्म में जोड़ें और VerifyCsrfToken.php पर भी जाएं

app-> Http-> Middleware-> VerifyCsrfToken.php

protected $except = [
        'paste your route here'
    ];

1

मेरे मामले में, साइट सर्वर में ठीक थी लेकिन स्थानीय में नहीं। तब मुझे याद है कि मैं सुरक्षित वेबसाइट पर काम कर रहा था।
इसलिए फाइल config.session.php में, वेरिएबल को गलत पर सेट करें

'secure' => env('SESSION_SECURE_COOKIE', false),

0

मेरे पास कई उप-डोमेन और सत्र कुकी के साथ ऐप था, उन लोगों के बीच समस्या थी। कुकीज़ साफ़ करने से मेरी समस्या हल हो गई।

इसके अलावा, सेट करने का प्रयास SESSION_DOMAINमें .env फ़ाइल। आपके द्वारा ब्राउज़ किए जा रहे सटीक उप डोमेन का उपयोग करें।


0

अपने वेब सर्वर पर सही सिस्टम समय सुनिश्चित करें। मेरे मामले में, योनि मशीन भविष्य में थी (26 जनवरी 14:08:26 यूटीसी 2226) तो निश्चित रूप से मेरे ब्राउज़र के सत्र कुकी में समय लगभग 200+ वर्ष पहले समाप्त हो गया था।



0

मैंने इन $ 1 से बचने के लिए दो उपाय खोजे हैं) संरक्षित $ को जोड़कर = ['/ yourroute'] परिभाषित रूट से csrf टोकन निरीक्षण को अक्षम करें। 2) बस टिप्पणी करें \ App \ Http \ Middleware \ VerifyCsrfToken :: क्लास लाइन संरक्षित मिडलवेयर ग्रुप इन कर्नेल में


0

मुझे भी यही समस्या थी लेकिन समस्या फ्रेमवर्क में नहीं बल्कि ब्राउज़र में है। मुझे नहीं पता कि क्यों, लेकिन Google क्रोम मेरे मामले में स्वचालित रूप से कुकीज़ को ब्लॉक कर देता है। कुकीज़ की अनुमति के बाद समस्या हल हो गई थी।


0

संक्षिप्त जवाब

के लिए मार्ग प्रविष्टि जोड़ें registerमेंapp/Http/Middleware/VerifyCsrfToken.php

protected $except = [
        '/routeTo/register'
    ];

और आदेशों के साथ कैश और कैश मार्ग को साफ़ करें:

php artisan cache:clear && php artisan route:clear

विवरण

हर बार जब आप लारवेल साइट तक पहुंचते हैं, तो एक टोकन उत्पन्न होता है, भले ही सत्र शुरू नहीं हुआ हो। फिर, प्रत्येक अनुरोध में, इस टोकन (कुकीज़ में संग्रहीत) को इसकी समाप्ति समय के खिलाफ मान्य किया जाएगा, फ़ाइल में SESSION_LIFETIMEफ़ील्ड में सेट किया गया है config/session.php

यदि आप समाप्ति समय से अधिक समय के लिए साइट को खुला रखते हैं और अनुरोध करने का प्रयास करते हैं, तो इस टोकन का मूल्यांकन किया जाएगा और समाप्ति त्रुटि वापस आ जाएगी। इसलिए, इस सत्यापन को उन रूपों पर छोड़ दें, जो प्रामाणिक उपयोगकर्ताओं (जैसे रजिस्टर या लॉगिन) के कार्यों से बाहर हैं, आप इसमें अपवाद मार्ग जोड़ सकते हैं app/Http/Middleware/VerifyCsrfToken.php


1
यदि वह पेज यूजर इनपुट को प्रोसेस करता है तो उसे CSRF चेक से गुजरना चाहिए ।
सौगात बोस

@SougataBose वास्तव में, उस मामले में मुझे लगता है कि Google कैप्चा के रूप में कैप्चा सत्यापनकर्ता का उपयोग करना सबसे अच्छा है
JC ग्रास

0

कई बार ऐसा हो रहा है क्योंकि आप बैक डेट में प्रोजेक्ट का परीक्षण कर रहे हैं


0

उपाय:

गुप्त टैब का उपयोग करें और फिर उसका परीक्षण करें।

कारण:

मेरे मामले में एक अन्य उपयोगकर्ता ने मेरे व्यवस्थापक पैनल के साथ लॉग इन किया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.