在实时服务器中登录/注册后,Laravel 5.8的419页已过期

时间:2019-06-02 14:10:08

标签: php laravel laravel-5 laravel-authentication laravel-session

表单提交登录/注册后,它显示419 |页已过期。我在表单中使用了@csrf。它在本地服务器上工作。但面对实时服务器中的问题。有什么帮助吗?我有3种类型的用户,并为他们实现了多重身份验证。我的代码如下:

config / auth.php

<?php

return [

    'defaults' => [
        'guard' => 'vendor',
        'passwords' => 'vendors',
    ],

    'guards' => [

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],

        'manager' => [
            'driver' => 'session',
            'provider' => 'managers',
        ],

        'vendor' => [
            'driver' => 'session',
            'provider' => 'vendors',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

    'providers' => [

        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

        'managers' => [
            'driver' => 'eloquent',
            'model' => App\Manager::class,
        ],


        'vendors' => [
            'driver' => 'eloquent',
            'model' => App\Vendor::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

    'passwords' => [
        'admins' => [
            'provider' => 'admins',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'managers' => [
            'provider' => 'managers',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'vendors' => [
            'provider' => 'vendors',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

];

RedirectedIfAuthenticated.php

public function handle($request, Closure $next, $guard = null)
    {
        switch ($guard) {
            case 'admin':
                if(Auth::guard($guard)->check()){
                    return redirect()->route('admin.dashboard');
                }
                break;
            case 'manager':
                if(Auth::guard($guard)->check()){
                    return redirect()->route('manager.dashboard');
                }
                break;
            case 'vendor':
                if(Auth::guard($guard)->check()){
                    return redirect()->route('vendor.dashboard');
                }
                break;

            default:
                if (Auth::guard($guard)->check()) {
                    return redirect('/home');
                }
                break;
        }

        return $next($request);
    }

除了在实时服务器上运行外,它在本地运行正常。请帮助。

3 个答案:

答案 0 :(得分:0)

请尝试:

{{ csrf_field() }}

代替

@csrf

有时@csrf也不适用于我。

如果未修复错误,则必须再使用一件事,

php artisan key:generate
php artisan config:cache
php artisan cache:clear
php artisan view:clear
php artisan route:clear

它将清除所有缓存并为您的项目生成新令牌。

答案 1 :(得分:0)

工作解决方案:-

情况 1 :如果您在本地系统中运行项目,例如 127.0.01:8000 ,

然后在您的 .env 文件中添加 SESSION_DOMAIN=

或者在你的 config/session.php 'domain' => env('SESSION_DOMAIN', ''),

然后运行

php artisan cache:clear

情况 2:如果项目在服务器上运行并且您拥有像“mydomain.com”这样的域

在您的 .env 文件中添加 SESSION_DOMAIN=mydomain.com

或者在你的 config/session.php 'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

然后运行

php artisan cache:clear

谢谢!

答案 2 :(得分:0)

另一种解决方案- 将这段代码添加到您的 .env 函数中

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

设置 MEMCACHED_HOST=127.0.0.1 & SESSION_DRIVER=file

希望它能节省您的时间。

谢谢。