Laravel运行Seeder生成管理员后登录始终提示凭证无效是什么原因?
可能的故障原因
- Seeder类名拼写错误
你定义的管理员Seeder类名为AdmininistratorSeeder(拼写错误,多了1个字母n,正确拼写应为AdministratorSeeder),但DatabaseSeeder中调用的是AdministratorSeeder::class,会导致Seeder运行时找不到类,管理员账号根本没有写入数据库。 - User模型未配置批量赋值字段
如果User模型的$fillable属性没有添加name、email、password三个字段,create方法会自动过滤未在白名单内的字段,最终写入的账号字段缺失,无法通过登录校验。 - 邮箱配置项为空
代码中邮箱取值为config('services.administrator.key'),如果config/services.php文件中没有配置administrator.key对应的有效值,写入数据库的邮箱会为空或者null,和你登录时输入的邮箱不匹配,导致校验失败。 - 密码加密方式不匹配
代码中硬编码使用bcrypt()函数加密密码,如果你的项目配置的哈希驱动不是bcrypt(比如使用argon2),登录时框架会用配置的驱动加密你输入的密码,和数据库中存储的bcrypt加密结果不一致,导致校验失败。建议替换为框架封装的Hash::make()方法,会自动适配当前配置的加密驱动。 - 登录验证字段不匹配
如果你项目的登录逻辑校验的字段不是email而是其他字段(比如用户名name、自定义的account字段等),和Seeder写入的字段逻辑不匹配,也会导致凭证校验失败。 - 账号未实际写入数据库
可能你没有执行php artisan db:seed命令完成数据填充,或者运行填充时因为users表的邮箱唯一约束报错中断,最终没有生成有效的管理员账号,可直接查询数据库users表确认是否存在对应的记录。
内容的提问来源于stack exchange,提问作者OsG
相关产品推荐
相关产品推荐

