4

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

配置/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);
    }

它在本地完美运行,除了在实时服务器上。请帮忙。

4

4 回答 4

4

请试试:

{{ csrf_field() }}

代替

@csrf

有时@csrf 也不适用于我。

如果没有修复错误,那么您必须使用另一件事,

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

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

于 2019-06-02T14:49:36.483 回答
0

面临同样的问题,注册后无法正常工作。

解决方案 在您的 .env 更改或添加 CACHE_DRIVER

CACHE_DRIVER=数据库到 CACHE_DRIVER=文件

不要忘记清除配置和缓存

于 2022-01-14T11:20:02.397 回答
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

谢谢你!

于 2021-06-04T14:25:27.743 回答
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

希望它能节省您的时间。

谢谢。

于 2021-06-09T04:28:42.893 回答