TokenMismatchException in VerifyCsrfToken.php Linie 53 in Laravel 5.1
Wenn ich versuche mich einzuloggen zeigt der mir token-Fehler. Ich habe token im Formular anzeigen es richtig ist, und wenn Kommentar \App\Http\Middleware\VerifyCsrfToken::class
,
in der Kernel.php
es macht mich einloggen aber nach dem Umleiten auf meinem dashboard bin ich nicht angemeldet. Ich bin mit MAMP auf mac.
<div>
<h1>Login</h1>
<div>
{!! Form::open(['url'=>'user/login','class' => '']) !!}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<ul>
<li><label>Customer Code</label>{!!Form::Text('customer_code',Input::old('customer_code'),['class'=>''])!!}</li>
<li><label>Password</label>{!!Form::Password('password','',['class'=>''])!!}</li>
<li>{!! Form::submit('Submit',array('class' => 'btn')) !!}</li>
</ul>
{!!Form::close()!!}
</div>
<div><a href="{!!URL::to('user/forget_password')!!}">Forget Password</a></div>
</div>
Mittlerweile benutze ich Sentry Package
für die Anmeldung.
/**
* post_login
*/
public function post_login()
{
try
{
$rules = [
'customer_code' => 'required',
'password' => 'required',
] ;
$message = [
'customer_code.required' => 'erorrr1',
'password.required' =>'error2'
];
$validator = Validator::make(Input::all(), $rules,$message);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
} //if ($validator->fails())
else
{
$authUser = Sentry::authenticateAndRemember(array(
'customer_code' => Input::get('customer_code'),
'password' => Input::get('password')), false);
if($authUser)
{
//$login = Sentry::loginAndRemember($authUser);
return Redirect::to('user/panel/'.$authUser->id)->with('comment', 'Welcome');
}
else
{
return Redirect::back()->with('comment', 'Error for login');
}
}//validator
}
catch(\Exception $e)
{
return Redirect::back()->withInput(Input::except('password','file'))->withErrors(['ERROR!!!!!']);
}
}
- Zeigen möchten-code, den Sie gearbeitet haben? benötigen Sie mehr Informationen?
- Wie hast du das generieren der token? zeigen Sie den code.
- Sicherzustellen, dass Sie set-token auf Ihrem Formular in der Ansicht, in einem versteckten Bereich vorzugsweise
- reza wo ist die "Methode" des Formulars????ist das eine GET-Anfrage?plz zeigen Sie uns Ihre Authentifizierung Logik und Umleitung.
- Ich denke, es hat die POST-Methode standardmäßig. Es ist notwendig, die Einstellung manuell?
- Änderte ich die E-Mail-login Attribute customer_code für Sentry
- Beim kopieren von Projekt und benennen Sie richtig funktioniert. Und nach manchmal zeigen mir eine Fehlermeldung....
- versuchen Sie, ändern der browser. Ich habe ein problem in chrome, aber firefox funktioniert einwandfrei.
- Möglich, Duplikat der Laravel 5 Auth Post Einreichen - TokenMismatchException in VerifyCsrfToken.php Linie 46
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeitet:
Da Sie mit dem Formular-generator entfernen Sie diese aus Ihrer form. Laravel form builder fügt automatisch eine versteckte token-Feld auf Ihrem Formular, wenn Sie
Form::open()
So entfernen Sie diese Zeile:
Naja, ich denke, alle verpassten das CSRF-Token-Erstellung beim logout!
So, ich habe gelöst das problem.
Fügen Sie einfach folgenden code in den header.
Und wenn Sie
{!!Form::open()!!}
es wird automatisch erstellen Sie die token. Ansonsten können Sieoder
unmittelbare form öffnen.
Am wichtigsten ist die Verwendung
return Redirect::to('');
auf controller-Funktion oder ein page-reload oder ajax-reload, die das token erstellt werden kann!Wie:
Sorgen für die token korrekt erstellt oder nicht, überprüfen Sie "Ansicht-Seite Quelle" auf browser und es zeigt wie:
Ich denke, es könnte das problem lösen, wie es für mich gearbeitet!
Mit einer frischen Installation von Laravel 5.1, ohne nur ein composer update von version 5.0 auf 5.1 sehe ich einige Unterschiede und eine in der Middleware-Ordner.
EncryptCookies.php eine neue Middleware, prüfen Sie, ob Sie es haben.
So, ich habe nicht nochmal getestet, ich tranfert im moment sind meine Dateien aus meiner version 5.0 um eine neue installation der version 5.1, aber ich bin mir ziemlich sicher, dass kann die Lösung für dieses problem, EncryptCookies.php war in den Stapel des token-mismatch-Fehler.
Hinzufügen
{!! csrf_field() !!}
mein problem gelöst, wie unten gezeigt:Wenn mit Laravel-Formular-Helfer wie unten:
CSRF-Code Hinzugefügt werden, automatisch in das html-Skript. Auch stellen Sie sicher, zeigen Sie den Quellcode im browser zu sein bestimmte, dass ein Feld wie unten wurde ja Hinzugefügt.
Taten Sie nicht, posten Sie Ihre Beispiel-code in deiner Frage.
Deshalb überprüfen Sie Ihren code mit den folgenden Optionen,
versuchen mit versteckten input-Feld den Wert:
Können Sie auch verwenden, form Klinge Vorlage:
Diese automatisch CSRF-Code in Ihre html-Skript
Eine weitere Sache, die in
<head>
Abschnitt:War ich auch mit diesem problem beim Versuch, eine Datei hochzuladen. Stellte sich heraus die max_post_size war überschritten wird, in diesem Fall offenbar alle POST-Variablen werden gelöscht, und daher kein token empfangen wird.
Hinzufügen
<?php echo Form::token(); ?>
Seite in die form.Diese Lösung bei mir funktioniert:
Hinzufügen
{{ csrf_field() }}
überall in der form.Entfernen App\Http\Middleware\VerifyCsrfToken::Klasse von $middleware in Kernel.php.
Ich verwendete den folgenden code. Es arbeitet perfekt.
Ich hatte das gleiche problem. Ich bin mit Laravel 5.1.28, php 5.6.13
Nach der Besichtigung der TokenMismatchException in VerifyCsrfToken, suchte ich im Internet nach Antworten, aber keine die mein problem gelöst.
Die Seite geschickt hat das token. Die token-Werte zeigt sich auch in der session-Datei in das Verzeichnis storage/framework/Sitzungen (ich deaktiviert, die Verschlüsselung zu sehen).
Erschöpft, ich re-installieren laravel und verwenden eine einfache form für die Prüfung - es funktionierte ohne token-mismatch-Fehler.
Bewegte meinen code, um neu installiert, laravel Stück für Stück, fand ich endlich
dass das problem dadurch verursacht wurde doctrine/dbal (ich weiß immer noch nicht, warum).
Entfernt es vom Komponisten.json und das problem verschwunden ist.
In der composer.json-token-mismatch-Fehler zu sehen war, mit der folgenden Zeile:
Ihrem Fall möglicherweise anders sein, aber möchten Sie vielleicht, um zu sehen, wenn Sie etwas ändern in
Komponist.json, die das problem möglicherweise verursachen.
Ich habe das gleiche problem, während der Verwendung dieses code
durch ändern auf
{!! csrf_field() !!}
mein problem lösenEs funktioniert für mich.