Laravel注册认证报错SessionGuard::login()参数为空如何修复?
问题原因
你在User模型中手动重写了Laravel Eloquent模型自带的create静态方法,且这个自定义方法没有任何业务逻辑也没有返回值,导致RegisterController调用User::create()创建用户时得到null值,把null传入要求Authenticatable接口实例的SessionGuard::login()方法就触发了本次类型错误。你提到的PHPStorm提示create方法返回void、功能后续突然失效也和这个自定义的空方法直接相关。
解决方案
直接删除User模型末尾新增的空create方法即可:
// 完全删除以下这段冗余代码 public static function create(array $validate) { }
删除后Laravel会自动调用Eloquent模型原生的create方法,该方法会返回创建成功的User模型实例,满足认证接口要求,注册流程即可恢复正常。
验证操作
- 清理路由缓存:执行
php artisan route:clear - 清理配置缓存:执行
php artisan config:clear - 重新提交注册表单,即可正常创建用户并自动登录
内容的提问来源于stack exchange,提问作者Luuk Roso
相关产品推荐
相关产品推荐

