使用新模型和保护的 Laravel 身份验证失败:未定义索引:模型

Posted

技术标签:

【中文标题】使用新模型和保护的 Laravel 身份验证失败:未定义索引:模型【英文标题】:Laravel authentication with new model & guard fails: Undefined index: model 【发布时间】:2019-08-13 23:41:05 【问题描述】:

我正在尝试使用额外的模型和防护来验证我的 Laravel 应用程序 (5.8)。问题是,我在以下登录方法期间收到“未定义索引:模型”错误。任何想法我做错了什么?我已经在 5.7 版本的 Laravel 中使用了这个集成,它在那里工作没有任何问题。

 auth()->guard('partner')->login($partner);

代码片段:

合作伙伴模型(附加设置)

class Partner extends Authenticatable  

protected $guard = 'partner';

    public function getRouteKeyName()
    
        return 'uuid';
    


守卫 (config.auth.php)

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'partner' => [
            'driver' => 'session',
            'provider' => 'partners',
        ],
],

提供者 (config.auth.php)

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    'partners' => [
        'driver' => 'eloquent',
        'table' => \App\Models\Partner::class,
    ],
],

中间件组 (kernel.php)

protected $middlewareGroups = [

        'partner' => [
            \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,
        ],

];

路由服务提供者

  protected function mapPartnerRoutes()
    
        Route::prefix('partner')
            ->middleware(['partner'])
            ->namespace($this->namespace)
            ->group(base_path('routes/partner.php'));

    

应用程序框架错误

【问题讨论】:

也许 ApplicationFrames 在调试时可以提供更多帮助 谢谢,我已经添加了应用程序框架错误。 【参考方案1】:

我认为您错过了在 partners 身份验证提供程序中配置模型,即:

'partners' => [
    'driver' => 'eloquent',
    //'table' => \App\Models\Partner::class,
    'model' => \App\Models\Partner::class,
],

【讨论】:

以上是关于使用新模型和保护的 Laravel 身份验证失败:未定义索引:模型的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 多重保护认证失败

Laravel 将密码重置链接发送到单独的身份验证保护

使用 Laravel 和 Passport 在身份验证失败时响应状态码 401?

Laravel 和 Vue 身份验证表单在登录失败时重新加载

laravel 5.4 中两种不同的身份验证模型

Laravel 多重身份验证保护路由多个中间件不起作用