Laravel
创建新会话令牌,但在使用csrf_token()
时使用旧令牌。验证它时使用新创建的session_token()
,从而提供The page has expired due to inactivity.Please refresh and try again.
或TokenMismatchException
。
完全适用于localhost但不适用于实时服务器
我已经清除了所有缓存,但无法使其正常工作
composer dump-autoload
php artisan optimize
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
token
因此csrf_token()
也使用相同的但是当进行后调用时,请求主体使用上面的标记,其中session_token使用新标记(注意:会话标记不会每次都创建新标记)< / p>
<?php
return [
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => 1200,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'store' => null,
'lottery' => [2, 100],
'cookie' => 'laravel_session',
'path' => '/',
'domain' => env('SESSION_DOMAIN', null ),
'secure' => env('SESSION_SECURE_COOKIE', false),
'http_only' => true,
];
storage/framework/session
有写入权限。
<form method="POST" action="{{ route('login') }}" role="form">
{{ csrf_field() }}
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required
autofocus>
<button type="submit" class="btn btn-green">Sign in</button>
</form>
TIA
答案 0 :(得分:0)
那你为什么不通过Session
门面添加令牌呢?
删除csrf_field()
方法并添加:
<input type="hidden" name="_token" value="{{ Session::token() }}" />