我将用户存储在一个名为users的mysql表中,密码用bcrypt加密在加密密码时一切都很顺利,但在将密码与用户输入进行比较时,总是错误的,我不知道如何修复它在解释的过程中,你需要做些什么https://gist.github.com/sarmanulco/49e582ab0317e1c542f30acf8d1f69eb请帮忙
rslzwgfq1#
您的代码示例没有显示您调用的位置 bcrypt.hash 以及存储密码,所以很难判断问题出在哪里。如果你在本地调试,你必须知道密码是什么;尝试从数据库获取密码哈希并运行 bcrypt.compare('the real password', 'password hash from db') 在节点控制台中,查看它返回什么。几乎可以肯定的是:1) 您保存的密码哈希不正确。2) 您将密码哈希与错误的内容进行比较。3) 它的工作正常,你只是没有输入正确的密码。诀窍是找出哪一个。
bcrypt.hash
bcrypt.compare('the real password', 'password hash from db')
xwmevbvl2#
SQL CREATE TABLE IF NOT EXISTS Users ( user_id int primary key auto_increment not null, first_name varchar(30), last_name varchar(100), pass varchar(50) ) character set utf8; 问题出在列文本上,配置为最多50个字符,我将它改为文本
SQL CREATE TABLE IF NOT EXISTS Users ( user_id int primary key auto_increment not null, first_name varchar(30), last_name varchar(100), pass varchar(50) ) character set utf8;
2条答案
按热度按时间rslzwgfq1#
您的代码示例没有显示您调用的位置
bcrypt.hash
以及存储密码,所以很难判断问题出在哪里。如果你在本地调试,你必须知道密码是什么;尝试从数据库获取密码哈希并运行
bcrypt.compare('the real password', 'password hash from db')
在节点控制台中,查看它返回什么。几乎可以肯定的是:
1) 您保存的密码哈希不正确。
2) 您将密码哈希与错误的内容进行比较。
3) 它的工作正常,你只是没有输入正确的密码。
诀窍是找出哪一个。
xwmevbvl2#
SQL CREATE TABLE IF NOT EXISTS Users ( user_id int primary key auto_increment not null, first_name varchar(30), last_name varchar(100), pass varchar(50) ) character set utf8;
问题出在列文本上,配置为最多50个字符,我将它改为文本