表单提交登录/注册后,它显示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);
}
除了在实时服务器上运行外,它在本地运行正常。请帮助。
答案 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
希望它能节省您的时间。
谢谢。