laravel Hash::check 始终返回false?

You’re using the wrong argument order. It’s Hash::check($input, $hash), not the other way around.

Short tinker example:

[1] > $pw = 123456;
// 123456
[2] > $hashed = Hash::make($pw);
// '$2y$10$xSugoyKv765TY8DsERJ2/.mPIOwLNdM5Iw1n3x1XNVymBlHNG4cX6'
[3] > Hash::check($hashed, $pw);
// false
[4] > Hash::check($pw, $hashed);
// true

发现测试这段代码 可以正常返回ture,但是把加密后的password存放到数据库后,再拿出来,就发现总是 false了,后来才发现,Mysql的数据库字段长度设置的是20,加密后的字符串长度超过20了,mysql居然没有报错,直接自动截取20位后保存。这就是总是返回false的原因了。

想问问 mysql 怎么可以调整设置呢?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

MySQL 5.7 起,SQL mode 中默认是严格,这种情况执行 SQL 应该就会报错。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!