我对postgres有点陌生,对SQL很生疏。
我有一个带有password_hash
列的users
表,它通过pgcrypto
存储哈希密码。
id | name | email | password_hash |
----+------------+-----------------+------------------------------------+
1 | john doe | [email protected]| $1$47i7aL0t$bUUZWSNhu.KBuFBlwYN3x1 |
字符串
通过此选择可以确定用户的密码是否有效:
SELECT password_hash = crypt('password123', password_hash) FROM users where email='[email protected]';
型
这将返回t
或f
,具体取决于密码是否匹配。
作为授权逻辑的一部分,如果密码有效,我需要返回用户的行,但我希望在单个查询中实现这一点,而不是首先对password_hash执行SELECT,然后再执行另一个SELECT来检索用户的行。
2条答案
按热度按时间crcmnpdw1#
您可以将密码检查向下移动到
WHERE
部分,然后确保电子邮件AND
密码正确:字符串
k75qkfdt2#
您可以:
字符串