Erstens, sorry für mein schlechtes EnglischDie angeforderte Token und die Sitzung Token sind nicht gleichen
ich ein neues Projekt über diesen Befehl erstellt haben:
laravel new blog
Dann habe ich make:auth
lief innerhalb des Blog-Projekts.
localhost: 8000/login
Alles funktioniert gut und ich kann ohne Probleme in den Blog anmelden mit dieser Adresse
Dann habe ich versucht, auf den Blog anmelden!
Ich habe auch die Benutzertabelle erstellt und einige Benutzer hinzugefügt!
Das Problem:
Das Problem beginnt, wenn ich dieses sehr einfaches Projekt auf dem Host bereitstellen. Wenn dieses Projekt auf dem Host bereitgestellt wird und versucht, in sie einzuloggen, wird es mir:
TokenMismatchException in VerifyCsrfToken.php line 67:
Es ist komisch, weil es auf localhost funktioniert aber nicht auf Host!
Was ich bisher versucht:
Ich habe versucht, um herauszufinden, wo der Benutzer aufgefordert Token auf der Sitzung mit dem Token eines Vergleich. Ich fand heraus, dass es eine Methode tokensMatch
in der folgenden Datei genannt ist:
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
ich diese Methode diese Änderung:
protected function tokensMatch($request)
{
$sessionToken = $request->session()->token();
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
$myArray = [ // I added this line
'SessionToken' => $sessionToken,
'RequetedToken' => $token,
];
var_dump($myArray); // I added this line
die(); // I added this line
if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
$token = $this->encrypter->decrypt($header);
}
if (! is_string($sessionToken) || ! is_string($token)) {
return false;
}
return hash_equals($sessionToken, $token);
}
Also, dann habe ich versucht, in den lokalen Host anmelden und der Ausgang war dies:
Array
(
[sessionToken] => YhfaZMkbEPwWdYmT4D1kyZeysEhFnltROvMgvRQh
[RequestedToken] => YhfaZMkbEPwWdYmT4D1kyZeysEhFnltROvMgvRQh
)
Es zeigt, dass der angeforderte Token und das Sitzungstoken gleich sind und ich mich erfolgreich anmelden kann.
Aber dann versuche ich auf dem Host anzumelden, war der Ausgang dieses:
Array
(
[sessionToken] => GSXeJSwD1mVSQ5XwgbLjnIk3VfhT5GzsiijfE15e
[RequestedToken] => Nd540vhx5BDidQb2FwudHWRzkK65IIhjgEBcf9ur
)
Wie Sie das angeforderte Token und die Session-Token diferent sind zu sehen! also kann ich mich nicht einloggen und es kommt mir der schreckliche TokenMismatchException
Fehler!
Es macht keinen Sinn für mich! Ich habe keine Idee warum!
hilft Alle geschätzten großen
UPDATE wäre:
Hier meine auth/login.blade.php
Datei conttent ist:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Login</div>
<div class="panel-body">
<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input type="email" class="form-control" name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password">
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<div class="checkbox">
<label>
<input type="checkbox" name="remember"> Remember Me
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
<i class="fa fa-btn fa-sign-in"></i>Login
</button>
<a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Wie ich in der Frage erwähnt habe, verwende ich Laravels Standard-Auth-System. Meinst du Laravel mit Form falsch ?! (Ich glaube nicht!). Wie auch immer, ich habe versucht, aber ich bekomme den gleichen Fehler! Nichts hat sich geändert! –
@ user41888 Können Sie Ihren HTML-Code teilen? Ich spreche darüber, dass ich den csrf-Token nicht auf den Post sende. –
@ user41888 Sind Sie diesen Richtlinien gefolgt? https://laravelcollective.com/docs/5.2/html –