如何使用pgcrypto在postgres9中登录



此代码不起作用:

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子句中进行检查,以便在匹配时返回persons行。

提前感谢Martin

将问题缩小。。。看看什么选择crypt("{password}"、"hello")得到你,以及表中是否有匹配的东西。

此外,日期比较看起来不是一个好主意,因为它假设对两个不同的时间变量表达式进行即时/原子求值。

除非出于某种原因该列使用了区分大小写的排序规则,否则明显降低电子邮件的大小写有点傻。。。

相关内容

  • 没有找到相关文章

最新更新