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

时间:2019-05-15 05:53:13

标签: php laravel session laravel-5.6

我已经搜索了所有主题,没有任何帮助。在我的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);
    }
}

1 个答案:

答案 0 :(得分:0)

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