लारवेल में पोस्ट अनुरोध - त्रुटि - 419 क्षमा करें, आपके सत्र / 419 का आपके पृष्ठ की समय सीमा समाप्त हो गई है


90

मैंने लारवेल 5.7 स्थापित किया

फ़ाइल में एक फ़ॉर्म जोड़ा गया \resources\views\welcome.blade.php

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

फाइल करने के लिए जोड़ा गया \routes\web.php

Route::post('/foo', function () {
    echo 1;
    return;
});

पोस्ट अनुरोध भेजने के बाद:

419 क्षमा करें, आपका सत्र समाप्त हो गया है। कृपया रिफ्रेश करें और पुनः प्रयास करें।

संस्करण में 5.6ऐसी कोई समस्या नहीं थी।


क्या आपने कोई रीडायरेक्ट जोड़ने की कोशिश की है? इसके बजाय return;आप कॉल कर सकते हैं return redirect()->back();। मैं जो देख सकता हूं, पोस्ट अनुरोध के बाद ऐप का कोई लेना देना नहीं है। हो सकता है कि अनुरोध को संसाधित करने के बाद आप इसे किसी दृश्य पर पुनर्निर्देशित कर सकें।
dcangulo

1
मैं एक ही मुद्दा रहा हूँ। जब मैं डेटाबेस सत्र के लिए स्विच ऐसा होता है और जब मैं वापस करने के लिए बदलने के fileलिए SESSION_DRIVERमें .envयह ठीक काम करता है। क्यों डेटाबेस आधारित सत्र काम नहीं कर रहा है।
जुनैद कादिर शेखानजई

मैंने आपके सटीक कोड को एक ताज़ा लार्वा 5.7 इंस्टॉल में कॉपी किया। इसने काम कर दिया। अन्यत्र समस्या है।
काइल वार्डल

टोकन समस्या के कारण यह समस्या। मैंने इसी तरह का कोड चलाने की कोशिश की है, लेकिन कोई त्रुटि नहीं हुई। आपको फॉर्म में अपने सत्र ड्राइवर, _token मूल्य प्रदर्शन जैसी अधिक जानकारी देनी चाहिए। इसके अलावा, आप इस फाइल vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.phpलाइन 67 में खुद को डिबग कर सकते हैं, यह जानने के लिए कि
बैंगोकिया

1
मुझे एहसास हुआ कि मैंने sessionsएक अलग उद्देश्य के लिए तालिका का उपयोग किया था । इस तालिका का नाम बदलने के बाद एक और अधिक अनुकूल करने के लिए और भाग गया artisan session:tableऔर ताज़ा माइग्रेशन सब कुछ ठीक काम कर रहा है
जुनैद कादिर शेखांज़ई

जवाबों:


123

नीचे पढ़ने से पहले सुनिश्चित कर लें कि आपके पास @csrfया {{ csrf_field() }}आपके रूप में है

<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>

सत्र समाप्त हो गया है या 419 पेज लार्वा में समाप्त त्रुटि संदेश आता है क्योंकि कहीं न कहीं आपका सीएसआरएफ टोकन सत्यापन विफल हो जाता है जिसका अर्थ है कि App\Http\Middleware\VerifyCsrfToken::classमिडलवेयर पहले से चालू है। फार्म में @csrfब्लेड निर्देश पहले से ही जोड़ा जाता है, जो ठीक होना चाहिए।

फिर दूसरे क्षेत्र की जाँच करना सत्र है। csrfटोकन सत्यापन सीधे, आपका सत्र में शामिल होता है आप अपने सत्र ड्राइवर या इस तरह के एक गलत तरीके से कॉन्फ़िगर Redis के रूप में काम कर रहा है नहीं, एक मुद्दा कारण हो सकता है कि क्या जांच करने के लिए चाहते हो सकता है तो।

हो सकता है कि आप अपने सत्र ड्राइवर / सॉफ़्टवेयर को अपनी .envफ़ाइल से स्विच करने का प्रयास कर सकें , समर्थित ड्राइवर नीचे दिए गए हैं

Laravel 5, Laravel 6 और Laravel 7 (Doc Link) में समर्थित सत्र ड्राइवर

  • file - सत्र भंडारण / ढांचे / सत्रों में संग्रहीत किए जाते हैं।
  • cookie - सत्र सुरक्षित, एन्क्रिप्टेड कुकीज़ में संग्रहीत हैं।
  • database - सत्र एक रिलेशनल डेटाबेस में संग्रहीत होते हैं।
  • memcached/ redis- सत्र इनमें से किसी एक फास्ट, कैश आधारित स्टोर में संग्रहित होते हैं।
  • array - सत्रों को एक PHP सरणी में संग्रहीत किया जाता है और इसे बरकरार नहीं रखा जाएगा।

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

संभावित त्रुटि-प्रवण परिदृश्य

  • संभवतः फ़ाइल-आधारित सत्र /storageनिर्देशिका के साथ अनुमति के मुद्दों के कारण काम नहीं कर सकते हैं (एक त्वरित googling आपको समाधान लाएगा), यह भी याद रखें कि निर्देशिका के लिए 777 डालना कभी भी समाधान नहीं है।

  • डेटाबेस ड्राइवर के मामले में, आपका DB कनेक्शन गलत हो सकता है, या sessionsतालिका मौजूद नहीं हो सकती है या गलत तरीके से कॉन्फ़िगर किया गया है (गलत कॉन्फ़िगरेशन भाग @Junaid Qadir द्वारा टिप्पणी के अनुसार एक समस्या होने की पुष्टि की गई थी)।

  • redis/memcached कॉन्फ़िगरेशन गलत है या एक ही समय में सिस्टम में कुछ अन्य कोड द्वारा हेरफेर किया जा रहा है।

यह एक अच्छा विचार हो सकता है कि php artisan key:generateएक नई ऐप कुंजी निष्पादित करें और उत्पन्न करें, जो बदले में, सत्र डेटा को फ्लश कर देगा।

स्पष्ट ब्राउज़र कैश हार्ड , मुझे लगता है कि मैं याद कर सकते हैं की तुलना में अधिक क्रोम और फ़ायरफ़ॉक्स एक अपराधी पाया।

आवेदन कुंजियाँ क्यों महत्वपूर्ण हैं, इसके बारे में और पढ़ें


1
कभी-कभी यह सिर्फ ब्राउज़र होता है, मुख्य रूप से Chrome सेट-कुकी सत्र मान नहीं डालेगा क्योंकि यह विकृत या गैर-मानक है। इसलिए लारवेल को फॉरम से प्राप्त _tokenमूल्य की तुलना करने के लिए HTTP अनुरोध से कोई मौजूदा सत्र मूल्य नहीं मिलेगा । SESSION_DOMAIN=...IP के साथ उपयोग करने से बचें जिसे Chrome और HTTP कुकी स्पेक्स असुरक्षित मानते हैं।
कीटलडॉग

मुझे एक ही समस्या है, लेकिन मैं लगातार त्रुटि को दूर नहीं करता हूं। यह समय-समय पर होता है। मुझे लगता है कि इसका मतलब है कि सत्र चालक के साथ कोई समस्या नहीं है, क्योंकि यह समय का 99% काम करता है। लेकिन मैं एक लाइव ऐप चला रहा हूं और मुझे समय-समय पर ग्राहकों की शिकायतें मिलती हैं। हालांकि यह बहुत दुर्लभ है। मैं फ़ाइल सत्र ड्राइवर का उपयोग कर रहा हूं। क्या किसी को पता है कि मेरे मामले में ऐसा क्यों होता है? धन्यवाद
TheAngelM97

@ TheAngelM97 आप या तो लॉगिन या रजिस्टर पेज पर जाकर इस त्रुटि को आसानी से दोहरा सकते हैं। 30 मिनट से अधिक के लिए, शायद कुछ भी न करें। फिर जब आप सबमिट पर क्लिक करते हैं, तो 419 Page Expiredदिखाता है। प्रयोज्यता के लिए, आप एक साधारण उपयोगकर्ता को कैसे बताते हैं कि अभी क्या हुआ है और इसे कैसे हल किया जाए?
पाथ्र्स

38

ऐसा इसलिए है क्योंकि फॉर्म में सीएसआरएफ की आवश्यकता होती है। 5.7 संस्करण में, उन्होंने इसे @csrf में बदल दिया

<form action="" method="post">
    @csrf
    ...

संदर्भ: https://laravel.com/docs/5.7/csrf


6
उनके फॉर्म में एक csrf टोकन शामिल है। यकीन नहीं होता कि उसने बाद में इसे संपादित किया या नहीं।
eResourcesInc

हाँ, उनके फॉर्म में मूल रूप से एक csrfक्षेत्र है, मैंने अभी-अभी संपादित इतिहास पर ध्यान दिया है
Dexter Bengil

यह मेरे मामले में भी इस मुद्दे को हल नहीं करता है, जैसा कि मेरे पास हमेशा मेरे रूप में है, लेकिन कुछ अन्य बदलावों के कारण त्रुटि का सामना करना शुरू कर दिया
सामी

14

केस 1: यदि आप अपने स्थानीय सिस्टम में 127.0.01: 8000 जैसे प्रोजेक्ट चला रहे हैं,

फिर

SESSION_DOMAIN=अपने .env फ़ाइल में जोड़ें

या आपके config / session.php में 'domain' => env('SESSION_DOMAIN', ''),

और फिर चला php artisan cache:clear

स्थिति 2: यदि परियोजना सर्वर पर चल रही है और आपके पास "mydomain.com" जैसा डोमेन है

SESSION_DOMAIN=mydomain.comअपने .env फ़ाइल में जोड़ें

या आपके config / session.php में 'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

और फिर चला php artisan cache:clear


9

कैसे उपयोग के बारे में

{{ csrf_field() }} के बजाय @csrf

419 त्रुटि ज्यादातर csrf टोकन मुद्दों के कारण है।


तुम्हारा मतलब है {{ csrf_field() }}?
ट्रैविस ब्रिटज़

यह उसी html को उत्पन्न करता है जैसे @csrf ऐसा परिणाम देता है
Sami

9

मैं Laravel 5.7 का उपयोग करता हूं। मुझे भी यही समस्या थी और इसका कारण यह था कि csrf टोकन फॉर्म में नहीं था, इसलिए जोड़ रहा था

@csrf

समस्या को ठीक किया


8

बाहर टिप्पणी करने के लिए प्रयास करें \App\Http\Middleware\EncryptCookies::classमें \app\Http\Kernel.php मैं इसी तरह की समस्या है और ऐसा करके इसे हल। शायद सबसे अच्छा समाधान नहीं है क्योंकि सुरक्षा लेकिन कम से कम यह काम किया।

पहले मैंने कोशिश की थी:

  • कैश को साफ़ करें
  • नई एप्लिकेशन कुंजी उत्पन्न करें
  • मेरे एप्लिकेशन को विभिन्न ब्राउज़रों में चलाएं (Chrome 70, मोज़िला फ़ायरफ़ॉक्स 57 और IE 11)
  • मेरे ऐप को दूसरे कंप्यूटर में चलाएं
  • बाहर टिप्पणी \App\Http\Middleware\VerifyCsrfToken::classमें\app\Http\Kernel.php
  • बाहर टिप्पणी \Illuminate\Session\Middleware\AuthenticateSession::classमें\app\Http\Kernel.php
  • अपग्रेड और डाउनग्रेड Laravel (5.6 और 5.7 के बीच)

लेकिन इनमें से किसी ने भी मेरे लिए काम नहीं किया।

संपादित करें

यहां मेरा मामला हर बार है जब मैं लॉगिन करता हूं, एक नया सत्र फ़ाइल बनाया जाएगा (पुराना वाला अभी भी बना हुआ है, लेकिन अचानक भूल गया है। चेक storage/framework/sessions) और नया सीएसआरएफ टोकन उत्पन्न होता है। तो समस्या VerifyCsrfToken के साथ नहीं है।

जैसा कि @Vladd ने टिप्पणी अनुभाग में उल्लेख किया है, आपको कभी भी टिप्पणी नहीं करनी चाहिए \App\Http\Middleware\VerifyCsrfToken::class। आपको जाँचना होगा कि आपने सर्वर को सही CSRF TOKEN भेजा है।


1
जिन तरीकों का आपने उल्लेख किया है, उनमें से केवल \ App \ Http \ Middleware \ VerifyCsrfToken पर टिप्पणी करना :: कक्षा में in \ app \ Http \ K कर्नेल.php ने मेरे लिए काम किया।
लेक्स सॉफ्ट

1
कैश साफ़ करें, नया एप्लिकेशन कुंजी उत्पन्न करें + कुकीज़ निकालें
dobs

आप कभी भी बाहर \ App \ Http \ Middleware \ VerifyCsrfToken :: वर्ग c0mmenting नहीं करेंगे। तुम ऐसा क्यों करोगे? ऐप में अपने आप को कमजोर बिंदु बनाने के लिए?
व्लाद

@dobs '+ कुकीज़ निकालें' के लिए धन्यवाद क्योंकि मुझे हर संभव काम करने के बाद भी 419 त्रुटि मिल रही थी और यह तभी काम किया जब मैंने ब्राउज़र कुकीज़ साफ़ की / गुप्त रूप से प्रयास किया।
नीरज पांडे

6

अपने @csrfस्वागत में परिवर्तन करें<input type="hidden" name="_token" value="{{ csrf_token() }}">

तो आपका कोड इस प्रकार है:

<form method="POST" action="/foo" >
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>

   <button type="submit">Submit</button>
</form>

6

यह आपके सत्र के लिए एक समस्या हो सकती है। इन सेटिंग्स के साथ खेलने के बाद मैंने अपनी समस्या का समाधान किया। मेरे लिए यह अंतिम विकल्प निकला।

  • यदि आप "फ़ाइल" का उपयोग सत्र चालक के रूप में कर रहे हैं, तो स्टोरेज / फ्रेमवर्क / सत्रों में देखें यदि सत्र एक ताज़ा होने के बाद सहेजे जा रहे हैं। यदि नहीं, तो यह गलत फ़ोल्डर अनुमतियों के कारण सबसे अधिक संभावना है। जांचें कि आपके संग्रहण / फ़ोल्डर का सही अधिकार है
  • अपने पृष्ठों में सभी जावास्क्रिप्ट को अक्षम करने का प्रयास करें (या तो इसे नेविगेटर के माध्यम से या कोड के अंदर अक्षम करके) और सुनिश्चित करें कि 'http_only' => सच है,
  • Https के साथ और इसके बिना उपयोग करने का प्रयास करें
  • सुनिश्चित करें कि SESSION_DRIVER चर शून्य नहीं है
  • 'एन्क्रिप्ट' => गलत, और 'एन्क्रिप्ट' => सच के बीच स्विच करने का प्रयास करें,
  • कुकी का नाम 'कुकी' => 'लार्वासेशन' बदलने की कोशिश करें,
  • या तो अपना SESSION_DOMAIN अपने वास्तविक डोमेन या नल पर सेट करने का प्रयास करें
  • 'सुरक्षित' => env ('SESSION_SECURE_COOKIE', गलत) और 'सुरक्षित' => env ('SESSION_SECURE_COOKIE', सत्य) के बीच स्विच करने का प्रयास करें,

स्रोत: लारवेल सत्र हमेशा लारवेल 5.4 में हर ताज़ा / अनुरोध को बदलता है


हां, कई अन्य चीजों की कोशिश करने के बाद, SESSION_SECURE_COOKIEस्विच (इसे बदल दिया गया false) ने मेरे लिए किया। (पर localhost:8000)
मार्टन कोएटिएर

SESSION_SECURE_COOKIE मेरे लिए भी समस्या थी, मैंने वेबसाइट अनुकूलन के लिए एक गाइड का पालन करते हुए इसे बदल दिया।
ब्रैम जानसेन

मेरे लिए यह https के साथ काम करता है लेकिन http के साथ नहीं ... किसी भी विचार क्यों? महान जवाब के लिए धन्यवाद, मुझे इसे खोजने में घंटों लग गए।
शार्कीनेरी

5

इस त्रुटि को हल करने के लिए आपको पहले निम्न कमांड में से एक को फॉर्म टैग में सम्मिलित करना होगा।

@csrf या {{ csrf_field }}

यदि आपकी समस्या हल नहीं हुई है, तो निम्न कार्य करें: (ध्यान दें कि उपरोक्त आदेशों में से एक फॉर्म टैग में होना चाहिए)

1. प्रपत्र टैग @csrfOR में निम्नलिखित में से किसी एक आदेश को सम्मिलित करें {{ csrf_field }}

2. .env फ़ाइल को खोलें और SESSION_DRIVER अनुभाग में "फ़ाइल" के मानों को बदलें।

3. फिर आपको लार्वा कैश को रीसेट करना चाहिए। टर्मिनल में कमांड के नीचे टाइप करें

php artisan view:clear php artisan route:clear php artisan cache:clear

php artisan config:cache

4. अंतिम चरण में, परियोजना को सर्व से अनप्लग करें और php कारीगर की सेवा पर फिर से क्लिक करें

मुझे उम्मीद है कि आपकी समस्या हल हो जाएगी



3

इतने समय के बाद मैंने इसे इस तरह हल किया

मेरा लार्वा इंस्टॉलेशन पथ कॉन्फ़िग फ़ाइल सेशन में सेट के समान नहीं था। pp

'domain' => env('SESSION_DOMAIN', 'example.com'),

2

यह ओवरकिल हो सकता है लेकिन आप यह कोशिश कर सकते हैं:

// छिपे हुए टोकन फ़ील्ड के साथ मार्ग का नाम दिया गया फॉर्म जोड़ा गया।

<form method="POST" action="{{ route('foo') }}" >
    @csrf
    <input type="hidden" name="_token" value="{!! csrf_token() !!}">
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

// नामांकित मार्ग

Route::post('/foo', function () {
    return 'bar';
})->name('foo');

// इसे <head></head>ब्लॉक में जोड़ें :

<meta name="_token" content="{!! csrf_token() !!}" />

मैंने इसे अपने स्थानीय पर होमस्टेड पर लारवेल 5.7 का उपयोग करते हुए परीक्षण किया था जो कि लारावेल इंस्टालर 2.0.1 का उपयोग करके ताजा स्थापित था और यह काम करता था। आपका पर्यावरण क्या है?

सिद्धांत: मुझे आश्चर्य है कि अगर आपके पर्यावरण पर {{ }}बनाम के साथ ब्लेड रेंडरिंग html टैग के साथ कुछ करना {!! !!}है या आप इसे कैसे परोस रहे हैं (जैसे। php artisan serve)। क्या बनाता है मुझे लगता है कि है line 335की /vendor/laravel/framework/src/illuminate/Foundation/helpers.phpएक ही पंक्ति मैन्युअल रूप से ऊपर टाइप प्रस्तुत करना चाहिए।


हाँ शांत है, लेकिन <meta>टैग अंदर रखा जाना चाहिए <head>, अंदर नहीं <body>। मुझे यकीन नहीं है कि HTML सत्यापनकर्ता इसे पसंद करेंगे।
एमिक्स

मैं कहूंगा कि आप सही हैं और इसे सिर पर ले जाना चाहिए।
जेरेमीकेनडी

2

कोड में कोई समस्या नहीं है। मैंने उसी कोड से जाँच की है जैसा आपने नई स्थापना के साथ लिखा है।

फॉर्म कोड:

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

web.php फ़ाइल कोड:

Route::get('/', function () {
    return view('welcome');
});

Route::post('/foo', function () {
    echo 1;
    return;
});

फॉर्म जमा करने के बाद परिणाम है: फॉर्म सबमिट करने के बाद आउटपुट

यदि आप अपना ब्राउज़र कैश साफ़ करते हैं या अन्य ब्राउज़र के साथ प्रयास करते हैं, तो मुझे लगता है कि यह ठीक हो जाएगा।


2

एक त्वरित बुरा तरीका यह है कि app \ http \ midware \ verifycsrftoken.php पर जाएं और सूची को छोड़कर $ में मार्ग जोड़ें। CSRF टोकन सत्यापन के लिए पोस्ट अनुरोध को अनदेखा किया जाएगा।

protected $except = [
    //
    'doLogin.aspx',
    'create_coupon',
];

2

419 | पृष्ठ इस त्रुटि का अर्थ है लारवेल सुरक्षा समस्या इसका मतलब है कि सीएसआरएफ टोकन फ़ील्ड का सही उपयोग नहीं किया गया है।

उपयोग {{csrf_field}} और आपकी समस्या हल हो जाएगी।


2

यदि आप इन सभी चरणों को आजमाते हैं तो यह काम करना चाहिए:

  1. सुनिश्चित करें कि आपका सत्र अच्छी तरह से कॉन्फ़िगर किया गया है, इसे फ़ाइल करने का सबसे आसान तरीका है और सुनिश्चित करें कि स्टोरेज फ़ोल्डर में chmod 755 की अनुमति है फिर आपके .envद्वारा इसे नीचे की तरह सेट किया जाए, फ़ाइल सत्र ड्राइवर को सेट करने का सबसे आसान तरीका है।

    SESSION_DRIVER=file
    SESSION_DOMAIN=
    SESSION_SECURE_COOKIE=false
    
  2. सुनिश्चित करें कि कैश फ़ोल्डर साफ़ और योग्य है, आप इसे कारीगर कमांड के नीचे चलाकर कर सकते हैं।

    php artisan cache:clear
    
  3. सुनिश्चित करें कि फ़ोल्डर अनुमतियाँ अच्छी तरह से सेट हैं, उन्हें नीचे की तरह कॉन्फ़िगर किया जाना चाहिए:

    sudo chmod -R 755 storage
    sudo chmod -R 755 vendor
    sudo chmod -R 644 bootstrap/cache
    
  4. सुनिश्चित करें कि आपके फॉर्म में @csrfटोकन शामिल है।

आशा है कि यह आपकी समस्या को हल करेगा।


अनुमतियों की sudo सेटिंग ने मेरे लार्वा को पूरी तरह से क्रैश कर दिया।
व्लादिमीर डेस्पोटोविक

2

Config / session.php पर जाएं

पंक्ति खोजें

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

इसे असत्य में बदलो

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

यदि यह पैरामीटर TRUE ब्राउज़र पर सेट है, तो आपको HTTPS प्रोटोकॉल का उपयोग करने की आवश्यकता होगी, अन्यथा यह सत्र को स्टोर नहीं करेगा। जैसा कि यह मान्य नहीं है


1

अपने में Http/Kernel.php

इस लाइन पर टिप्पणी करने का प्रयास करें:

\Illuminate\Session\Middleware\AuthenticateSession::class,

अपने वेब मिडिलवेयर सरणी में

यह आपके मुद्दे की जड़ हो सकता है


1

डिफ़ॉल्ट रूप से मुझे यह समस्या नहीं थी। इसलिए मैंने जो किया वह chmod -R 644 sessions समस्या को दोहराने के लिए है।

यहाँ छवि विवरण दर्ज करें

बाद में मैंने सत्र फ़ोल्डर के लिए अनुमतियाँ दीं chmod -R 755 sessions

अब मेरा प्रोजेक्ट कोड फिर से काम करता है।

यहाँ छवि विवरण दर्ज करें

कारण यह होता है कि आप लेखन अनुमति की कमी के साथ फ़ाइल पर अपना कैश संग्रहीत करते हैं।

सत्र कॉन्फ़िगरेशन फ़ाइल कॉन्‍फ़िगर / सत्र.php पर संग्रहीत है। इस फ़ाइल में आपके लिए उपलब्ध विकल्पों की समीक्षा करना सुनिश्चित करें। डिफ़ॉल्ट रूप से, लारवेल को फ़ाइल सत्र ड्राइवर का उपयोग करने के लिए कॉन्फ़िगर किया गया है, जो कई अनुप्रयोगों के लिए अच्छी तरह से काम करेगा। उत्पादन अनुप्रयोगों में, आप तेजी से सत्र प्रदर्शन के लिए मेम्केड या रेडिस ड्राइवरों का उपयोग करने पर विचार कर सकते हैं।

समाधान:

1 - जैसा कि मैंने ऊपर तय किया है कि आप सत्र फ़ोल्डर को 755 अनुमति दे सकते हैं। 2 - आप दूसरे सत्र ड्राइवर कॉन्फ़िगरेशन का उपयोग कर सकते हैं।

फ़ाइल - सत्र भंडारण / ढांचे / सत्रों में संग्रहीत किए जाते हैं। कुकी - सत्र सुरक्षित, एन्क्रिप्टेड कुकीज़ में संग्रहीत हैं। डेटाबेस - सत्र एक रिलेशनल डेटाबेस में संग्रहीत होते हैं। memcached / redis - सत्र इन फास्ट, कैश आधारित स्टोरों में से एक में संग्रहीत किए जाते हैं। सरणी - सत्र एक PHP सरणी में संग्रहीत किए जाते हैं और इसे बरकरार नहीं रखा जाएगा।

ध्यान में रखना; यदि आप memcached / redis का उपयोग करना चाहते हैं, तो आपको उन्हें अपने सर्वर पर स्थापित करने की आवश्यकता है या आपका docker redis कंटेनर चलना चाहिए।


1

दरअसल CSRF एक सत्र आधारित टोकन है। मार्ग समूह में अपना मार्ग जोड़ें और एक मिडलवेयर जोड़ें जो सत्रों को नियंत्रित करता है।

लार्वा में वेब एक डिफ़ॉल्ट मिडलवेयर है और यह सत्र अनुरोधों को नियंत्रित कर सकता है।

Route::group(array('middleware' => ['web']), function () {
  Route::post('/foo', function () {
     echo 1;
     return;
  });
});

1

यदि आपके पास पहले से ही csrf निर्देश है, तो आपने सत्र चलाने के तरीके को बदल दिया होगा।

में config/session.php, 'सुरक्षित' फ़ील्ड की जाँच करें । अगर आपके सर्वर पर https उपलब्ध नहीं है तो यह गलत होना चाहिए।

आप SESSION_SECURE_COOKIE=FALSEअपनी .envफ़ाइल (रूट डायरेक्टरी) पर भी डाल सकते हैं ।


1

अपने प्रोजेक्ट पर कमांड लाइन cmd खोलें।

1.command

php artisan config:cache

2.comand

php artisan route:clear

1

क्या आपके पास अपने एप्लिकेशन के हेडर में csrf भी है?

<meta name="csrf-token" content="{{ csrf_token() }}">

1

जबकि फॉर्म में है @csrf, यह अभी भी दिखाता है419 pages has expired

मैंने इसे SESSION_SECURE_COOKIEconfig / session.php में गलत विकल्प के अपडेट के बाद हल किया

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

स्पष्ट कैश की तुलना में


1

मैं बस इस पूरे क्षेत्र में गया और मैं यहां एक उत्तर के लिए मँडरा रहा हूँ .. मेरे मामले में इसका समाधान ब्राउज़र इतिहास को साफ़ करना था।


1

मेरे मामले में मार्गों के अंत में एक!> था। वहां काफी समय बिताया ...


1
वही, मैं ?>web.php
msalihbindak

1
वाह। नहीं बिल्कुल मेरे मामले में एक ही समस्या है, लेकिन अपने समाधान मुझे इस जाँच बनाया है, और जब मैंने किया, मैं खाली स्थान के देखा से पहले उद्घाटन <?php टैग, और कहा कि क्या साइट पर हर रूप पर एक 419 पैदा कर रहा था की! अजीब तरह से, यह PHP 7.3 के साथ नहीं हुआ, और 7.4 में अपग्रेड होने के बाद शुरू हुआ!
बेन जॉनसन

0

मेरे पास बस एक ही मुद्दा था और यह मेरे लिए पूरी तरह से बेवकूफ था। मैंने कहा फ़ॉर्म सबमिट करने से पहले जावास्क्रिप्ट के माध्यम से सभी फॉर्म फ़ील्ड (केवल सबमिट बटन के बजाय) को अक्षम कर दिया था! यह निश्चित रूप से, सभी फार्म तत्वों को प्रस्तुत नहीं किया जा रहा है (छिपे हुए _tokenक्षेत्र सहित ) जो बदले में 419 त्रुटि लाया!

मुझे आशा है कि यह कुछ घंटों तक सिर खुजाने में किसी की मदद करता है!

अक्षम प्रपत्र जानकारी अनुरोध में दिखाई नहीं देती हैं


0

मुझे यह मुद्दा बहुत पहले मिला था। मुझे याद है कि यह अनुमति का कारण बनता है storage/framework/sessions। आप इसे chmod -R 0777 storage/framework/sessionsकमांड द्वारा बदलना चाहते हैं । इसने मेरे लिए काम किया।


0

मेरे मामले में, यह बहुत हास्यास्पद है। Auth::routes()रूट फ़ाइल के शीर्ष पर रखने पर मुझे त्रुटि 419 मिलती है ।

Auth::routes();

Route::middleware('auth')->group(function () {
    Route::get('/', 'DashboardController@index')->name('dashboard');
});

और मैंने Auth::routes();रूट फ़ाइल के निचले भाग में जाकर त्रुटि को ठीक किया ।

Route::middleware('auth')->group(function () {
    Route::get('/', 'DashboardController@index')->name('dashboard');
});

Auth::routes();

शायद यह आपके मामले में भी मदद कर सकता है। सौभाग्य।


0

कृपया ध्यान दें कि यदि आप एक बड़ी फ़ाइल अपलोड करने का प्रयास कर रहे हैं जो 4 फ़ाइल के आकार की सीमा से अधिक है, तो आपको त्रुटि 419 प्राप्त होगी। इस स्थिति में आप अपलोड_मैक्स_फाइल्स और पोस्ट_मैक्स_साइज दोनों को एक उचित राशि तक बढ़ा सकते हैं, (जैसे 10 एम या 20 एम आपके उपयोग के मामले और संसाधनों पर निर्भर करता है), यहां देखें: https://stackoverflow.com/a/2004541/2100489

लेकिन यह संसाधन खपत के मुद्दों, जैसे बैंडविड्थ और भंडारण का कारण हो सकता है। समाधान के रूप में आप फ़ॉर्म सबमिट करने से पहले फ़ाइल का आकार देख सकते हैं और चेतावनी संदेश दिखा सकते हैं।

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