Laravel 8.55搭配Statamic 3使用Breeze认证注册成功但无法登录问题
问题根因
你遇到的问题是Statamic 3默认会覆盖Laravel的认证用户提供者配置,导致Breeze生成的认证逻辑使用了Statamic的用户驱动,而非Laravel默认的Eloquent用户驱动:存数据时走的是Laravel的User模型写入users表,但登录校验、登录态生成时走的是Statamic的用户查询逻辑,自然匹配不到已存入的用户,也就无法生成remember_token、无法完成自动登录。
解决方案
按以下步骤逐一排查修复即可:
- 第一步:修正Laravel认证配置
打开config/auth.php,找到providers配置块,确认users提供者配置如下:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], ],
如果此处driver被改为statamic就会出现你遇到的问题。
- 第二步:确认User模型继承关系
检查app/Models/User.php是否继承Laravel默认的认证类,正确的继承关系如下:
use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { // 原有模型逻辑 }
不要继承Statamic提供的User类。
- 第三步:(需要兼容Statamic用户体系时执行)
如果你需要同时使用Statamic的权限功能和Breeze的用户表,需要将Statamic的用户驱动改为Eloquent,打开config/statamic/users.php修改如下配置:
'driver' => 'eloquent', 'model' => App\Models\User::class,
这样Statamic会自动复用你现有的users表做用户查询。
- 第四步:清理配置缓存
修改完所有配置后执行以下命令清理缓存,避免旧配置生效:
php artisan config:clear php artisan cache:clear
修复完成后重新注册新用户即可正常登录,remember_token字段也会在用户勾选「记住我」时自动写入。
内容的提问来源于stack exchange,提问作者JustInCase
相关产品推荐
相关产品推荐

