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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

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

2年前 评论

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