【问题标题】:Verifying user log email and password by looping through psql table通过遍历 psql 表来验证用户日志电子邮件和密码
【发布时间】:2017-12-23 06:33:15
【问题描述】:

我正在学习编码并尝试使用 Express 在节点中构建一个待办事项 Web 应用程序(我认为这是正确的措辞)。

我在 postgresql 中有一个表('users'),它存储用户 ID、电子邮件和密码。

当用户登录到网站时,我想遍历表格并确保电子邮件存在并且它与密码匹配,然后用户可以登录并且当他们登录时 - 他们唯一的 user_id 被分配并带来列出他们以前的待办事项清单。如果可能的话,我也想加入 knex。

我不知道如何做到这一点,如果有任何提示/指出正确的方向,我将不胜感激。

谢谢

【问题讨论】:

  • 这是一个简单的 SELECT 查询,您尝试过什么,遇到了什么问题?

标签: javascript html postgresql knex.js


【解决方案1】:

先尝试一些基本的东西

SELECT
  user_id
  FROM users
  WHERE
   email = _your_user_email
   AND password = _your_user_password;

如果您返回的结果包含 user_id 或您想要返回的任何内容,则该用户存在。您可以通过检查电子邮件进一步扩展此功能,并让用户知道电子邮件存在但密码不正确等。先尝试简单的方法,看看这是否符合您的需求。

【讨论】:

    【解决方案2】:

    首先,我建议您将users 表的id 字段命名为id。 最好将 id 字段命名为 id 并将引用列命名为 <tablename>_id (例如,表 clothes.id 的唯一标识符 iter 和 clothes.user_id – 表 users 的外键)。

    其次,强烈建议将您的密码作为原始数据存储在数据库中(出于安全原因)。 将用户密码保存为散列数据是一种常见的做法。 例如,看看bcrypt 包。

    要选择用户(在数据库方面没有“循环”之类的东西,它被称为“查询”),您需要 创建一个类似的查询

    select
        id,
        email,
        <any_other_field_you_need>
    from
        users
    where
        email = 'your@email.com'
        and password = 'your password hash'
    

    knex可以写成

    knex('users')
        .select(['id', 'email', '<any_other_field_you_need>'])
        .where('email', 'your@email.com')
        .where('password', 'your password hash')
    

    您可以从 express body 获取您的查询参数(电子邮件、密码)。 确保您使用 POST HTTP 方法发送请求并将数据作为正文传递。

    如果您不知道express - 它是npm package。 它有助于创建 Web 服务。他们有一个你好世界guide 官方网站。随意检查一下。或者只是简单地谷歌“初学者快速教程”,互联网上有很多很棒的教程。它很受欢迎。

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2014-11-20
      相关资源
      最近更新 更多