You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel多认证Guard登录报错Admin模型不符合Authenticatable如何解决?

错误原因

你收到的类型错误是因为 App\Models\Admin 模型没有实现 Laravel 认证要求的 Illuminate\Contracts\Auth\Authenticatable 契约,SessionGuard::login() 方法只接受实现了该接口的实例作为参数。

修复步骤

1. 调整Admin模型继承关系

打开 app/Models/Admin.php 文件,让Admin模型继承Laravel提供的认证基类:

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Admin extends Authenticatable
{
    use HasFactory;

    // 保留你原有Admin模型的配置,比如可填充字段、隐藏字段等
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    protected $hidden = [
        'password',
        'remember_token',
    ];
}

2. 校验auth配置正确性

打开 config/auth.php 确认管理员守卫和用户提供者配置正确:

return [
    // ... 其他原有配置
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        // 管理员守卫配置
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
        // 管理员用户提供者配置
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Models\Admin::class,
        ],
    ],
    // ... 其他原有配置
];

3. 可选:清理控制器冗余代码

你当前控制器中使用了firstOrFail()方法,该方法查询不到匹配数据时会直接抛出404异常,后续的if(!$model)判断完全冗余,可以直接删除,避免无效逻辑。


内容的提问来源于stack exchange,提问作者shrcod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:24:02