如何验证 mysql 中的密码数据
How to validate password data in mysql
- 我创建了一个 'user' table 来存储用户名和密码。
- 使用此查询插入用户详细信息(对于密码,使用 PASSWORD() 函数):
INSERT INTO user (username, password) VALUES ('testuser3', PASSWORD('helloworld'));
- 现在要验证用户,使用以下查询:
SELECT * 来自用户 WHERE 用户名 = 'testuser3' AND 密码 = PASSWORD('helloworld');
- 想法是,如果SELECT查询return一行,则用户通过身份验证,否则不通过。但是我得到的响应是 'Empty set',即使用户名和密码是正确的。
那么我必须在此 SELECT 查询中更新什么才能获得所需的结果?
注意:这个问题对于问题中提到的场景非常特殊。要实际存储密码,请使用加盐哈希概念。更多内容可以在 O. Jones 和 martinstoeckli
的下方评论中找到
找到解决方法。我使用此查询创建了 table:
CREATE TABLE user (id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(32), password VARCHAR(64), PRIMARY KEY (id));
当我将用户名和密码的长度增加到 128 时,查询有效。
- 我创建了一个 'user' table 来存储用户名和密码。
- 使用此查询插入用户详细信息(对于密码,使用 PASSWORD() 函数):
INSERT INTO user (username, password) VALUES ('testuser3', PASSWORD('helloworld'));
- 现在要验证用户,使用以下查询:
SELECT * 来自用户 WHERE 用户名 = 'testuser3' AND 密码 = PASSWORD('helloworld');
- 想法是,如果SELECT查询return一行,则用户通过身份验证,否则不通过。但是我得到的响应是 'Empty set',即使用户名和密码是正确的。
那么我必须在此 SELECT 查询中更新什么才能获得所需的结果?
注意:这个问题对于问题中提到的场景非常特殊。要实际存储密码,请使用加盐哈希概念。更多内容可以在 O. Jones 和 martinstoeckli
的下方评论中找到找到解决方法。我使用此查询创建了 table:
CREATE TABLE user (id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(32), password VARCHAR(64), PRIMARY KEY (id));
当我将用户名和密码的长度增加到 128 时,查询有效。