我调用Form ::打开它的工作并显示_token
{!! Form::open(['url' => URL::route('admin-login'), 'method' => 'post', 'class' => 'form-horizontal m-t-20']) !!}
<form method="POST" action="http://example.net/admin/login" accept-charset="UTF-8" class="form-horizontal m-t-20"><input name="_token" type="hidden" value="7ybw31c2ruMTjquv2lbyFAoIg1jBVySeQzBdrP">
session.php文件
return [
'driver' => env('SESSION_DRIVER', 'file'),
//'lifetime' => 120,
'lifetime' => 120*30*24*10,
//'lifetime' => 360,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => null,
'secure' => false,
'http_only' => true,
];
我只是转储会话令牌并形成令牌值。两个令牌都有不同的价值
此会话令牌在服务器中的每次刷新时都会更改,并在localhost中保持相同
protected function tokensMatch($request)
{
$sessionToken = $request->session()->token();
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
var_dump($sessionToken);
var_dump($token,true); die;
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);
}
VAR DUMP的结果
var_dump($sessionToken);
EQ0oX12dMLLvI86MIb385vJ3e3U1DaIWiUVpt7Zx
var_dump($token,true);
7ybw31c2ruMTjquv2lbyFAoIg1jBVySeQzBdrP
以下步骤我已经尝试但问题未解决
此问题仅在服务器中发生,并且在localhost中正常工作
- 从本地上传完整项目到实时
- 存储/会话目录中的文件权限(工作正常并生成文件)
-Cleared artisan cache
并尝试了TokenMismatchException in VerifyCsrfToken.php Line 67
的步骤来自的解决方案 TokenMismatchException in VerifyCsrfToken.php
解决方案:重启服务器后问题解决了。