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

Laravel9自定义用户表认证:缺失LoginController如何修改登录字段?

Laravel 9 自定义认证字段(login_id替代name)解决方案

问题背景

需要在Laravel 9中基于自定义用户表实现认证,使用login_id字段替代默认的name字段完成用户认证。在Laravel 8中可通过LoginController.php的username()方法修改认证字段,但Laravel 9的app\Http\Controllers\Auth目录下无LoginController.php,且添加name字段后认证可正常工作。

解答内容

1. 缺少LoginController.php是正常情况

Laravel 9起,官方默认的认证脚手架(如Breeze、Jetstream或laravel/ui的新版实现)不再生成独立的LoginController.php,而是将认证逻辑整合到路由、请求类或模型中,这是框架版本迭代后的正常架构变化。

2. 实现自定义认证字段的两种方法

方法一:在User模型中重写username方法

直接在app/Models/User.php中添加以下代码,Laravel认证系统会自动识别该方法并使用指定字段作为认证标识:

public function username()
{
    return 'login_id';
}

方法二:修改认证守卫配置

编辑config/auth.php文件,在对应守卫的配置中指定username字段:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
        'username' => 'login_id', // 自定义认证字段
    ],
    // 其他守卫配置...
],

同时确保providers配置指向正确的User模型:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:50:26