如何构建我的数据库,以便只有登录用户才能添加,删除或编辑他们的帖子?

问题描述 投票:0回答:1

我使用Express.js制作Web应用程序,并使用passportjs学习身份验证。我基本上有一个crud web应用程序,让我可以编辑,删除或添加任何人从我的Web应用程序中的任何内容。这是我的Postgres数据库的样子。

  \connect usertesterdb;

  CREATE TABLE IF NOT EXISTS users (
   id BIGSERIAL PRIMARY KEY,
   username VARCHAR(255),
   email VARCHAR(255),
   password TEXT UNIQUE NOT NULL
  );

  CREATE TABLE IF NOT EXISTS mymenutable (
   id BIGSERIAL PRIMARY KEY,
   foodtitle VARCHAR(255),
   fooddescription TEXT,
  );

什么是最好的方式,以便我可以实现我的目标?目前,这两个表没有相互通信。我希望能够使代码清洁和可维护的一些策略或良好实践。

编辑:我想我可以在我的“mymenutable”中添加另一个名为“userid”的列,它从“users”表中引用用户的id号,然后每次用户创建或编辑或删除他们的帖子或菜单时,都会检查登录用户的id是否等于菜单的“userid”。我不知道这是否是正确的方法,或者它是否可以以某种方式被操纵。

database postgresql express authentication
1个回答
1
投票

是的,向mymenutable添加外键将是将用户与每个条目相关联的规范和最佳方式:

ALTER TABLE mymenutable
   ADD COLUMN userid bigint REFERENCES users(id);

您应该填充现有行的列,然后将其设置为NOT NULL

这是偏离主题,但我会废除UNIQUE上的password约束。我认为它没有任何好处,但除此之外,这是一个明显的安全风险:用户可以通过设置自己的密码来找出其他用户的密码,他们猜测他们可能是其他人的密码 - 错误意味着他们找到了一个。

© www.soinside.com 2019 - 2024. All rights reserved.