登录和注销有时仅在页面刷新后可见

Login and logout sometimes only visible after pages refresh

我已经搜索了所有主题,但没有任何帮助。在我的 Laravel 安装中,有时您必须在登录和注销后重新加载页面才能使其可见。极少数情况下您根本没有登录或注销。

我用Laravel 5.6.39.

登录控制器

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Session;

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request, $user)
    {
    }

    public function logout()
    {
        Auth::logout();
        Session::flush();
        return Redirect::to('/');
    }
}

config/session.php

return [

    'driver' => env('SESSION_DRIVER', 'database'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => true,
    'files' => storage_path('framework/sessions'),
    'connection' => 'mysql',
    'table' => 'sessions',
    'store' => null,
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        str_slug(env('APP_NAME', 'laravel'), '').'session'
    ),

    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE', false),
    'http_only' => true,
    'same_site' => null,
];

RedirectIfAuthenticated.php中间件

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/');
        }

        return $next($request);
    }
}

我还尝试更改 cookie 名称、定义 cookie 域、将会话从文件更改为数据库。没有任何帮助。

编辑: 我只是将会话数据库与 cookie 进行了比较。在数据库中我有正确的状态与 cookie 的比较,只有 Laravel 他自己说你没有登录或退出。

我的RedirectIfAuthenticated没变

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/');
        }

        return $next($request);
    }
}

尴尬的错误。 PHP-FPM 在服务器设置中被激活,它将完整的 PHP 请求放入缓存。如果没有 FPM,Laravel 页面将按预期工作。