尝试加密地雷功能并将其找回,需要您的帮助告诉我,我做错了什么?
SELECT user_id
FROM users
WHERE email = 'Natali@gmail.com' AND u_password = crypt(u_password, '@kjvfhjh88976');
// Null result
INSERT INTO users (user_id, nick_name, email, u_password)
VALUES
(87678655, 'Natali1990@', 'Natali@gmail.com', crypt('@kjvfhjh88976', gen_salt('bf')));
SELECT user_id FROM users WHERE email = 'Natali@gmail.com'; // Working
答案 0 :(得分:2)
您错误地使用了pgcrypto
软件包,并且考虑到它令人困惑,这并不奇怪。您当前的插入内容看起来不错:
INSERT INTO users (user_id, nick_name, email, u_password)
VALUES
(87678655, 'Natali1990@', 'Natali@gmail.com',
CRYPT('@kjvfhjh88976', GEN_SALT('bf')));
然后,使用SELECT
来验证用户身份,如下所示:
SELECT u_password = CRYPT('@kjvfhjh88976', u_password)
FROM users
WHERE email = 'Natali@gmail.com';
如果用户输入正确的密码,它将返回true。您可以在Postgres documentation;
中阅读有关此内容的更多信息。