0
这个代码不工作:如何使用pgcrypto在Postgres的登录9
select *
from persons
where lower(email) = lower({email})
and (password = crypt('{password}', password))
and approved = 1
and now() between start_date and coalesce(end_date, current_timestamp);
代码我必须设置散正常工作:
Insert into persons (
person_id
, name_first
, name_last
, email
, phone
, username
, password
, start_date
, approved
, superuser)
values
(
nextval('PERSON_ID_SEQ')
, {name_first}
, {name_last}
, {email}
, {phone}
, 'username'
, crypt('{password}', gen_salt('md5'))
, now()
, 0
, 0
)
,但我似乎无法得到该位右对照输入的密码来检查散列。 我想在where子句中进行检查,以便在匹配时可以返回人员行。
在此先感谢 马丁
为什么{}密码在引号,但{}电子邮件是不是?从地址条款中抽出隐藏调用并将其放入选择列表中,以便您可以看到实际发生的情况。 – jjanes 2014-10-10 19:13:45
您是否检查过您的选择是否没有其他限制(如startdate,approved,...)? – 2014-10-10 19:15:57
'password'列的数据类型是什么?请注意,'pwhash'会是一个更好的列名! – Andomar 2014-10-10 20:47:24