php - Larvael Auth 中间件“非法偏移类型”
问题描述
我正在尝试使 Laravel 的身份验证中间件工作,但我遇到了一个错误,我不知道如何解决它。
非法偏移类型
供应商/laravel/framework/src/Illuminate/Auth/AuthManager.php:68 AuthManager.php
public function guard($name = null)
{
$name = $name ?: $this->getDefaultDriver();
return $this->guards[$name] ?? $this->guards[$name] = $this->resolve($name); // <-- This is where the error is
}
应用程序/Http/Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
config/auth.php(删除了 lisibility 的注释
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => 10800,
];
路线/web.php
Route::get('/', function () {
return view('welcome');
})->name('welcome');
Auth::routes();
Route::middleware(['Auth'])->group(function () {
// My routes are here and working without the middleware
});
Route::get('/home', 'HomeController@index')->name('home');
PHP版本是7.4.8
知道问题可能是什么吗?谢谢 !
解决方案
如您所见,中间件Auth
在内核中注册为auth
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
];
所以我们可以用它注册的确切名称来调用中间件。您调用Auth
了 web.php 而不是使用auth
确切的中间件。这会导致混乱
网页.php
// I have replaced Auth with auth
Route::middleware(['auth'])->group(function () {
// My routes are here and working without the middleware
});
应该管用
推荐阅读
- c# - 从 C# 中的原始 JSON POST 请求中获取键名
- c# - 实体框架和内存缓存
- r - 在ggplot中绘制具有计算标准偏差的分组条形图
- r - 结合变异和过滤功能
- apache-spark - 在 Spark 中转换数据框中的列类型
- angular - Angular 5:如何在 patchValue 之后选择 RadioButtons?
- vim - 查找所有子匹配以重新排序句子
- r - 如何使用 XLConnect R 包旋转文本?
- ios - 在 iOS 的 LaunchScreen.xib 的标签中动态添加当前年份
- javascript - 使用 express 更新 MongoDB 中的 userData