0

我正在开发一个有多个用户的网站。说总共 5 个用户。我需要确保的是,每个用户只能访问他们输入的数据。

想想 CRM 或工作委员会。所以 john 将只能访问 johns 的信息、编辑、添加等。与 jane 和 june 相同。

现在,如果我的阅读是正确的,我需要做的就是确保查询仅根据其唯一 ID 提取正确的数据?

所以用户的数据库表如下所示:

Database: xxxxx, Table: xh_user
user_id 
user_username
user_fname
users_email
users_password 
users_salt

所以如果 johns user_id 是 7,当他登录时,它会查询他的 id 并只显示他从数据库中获取的内容。

我对此是否正确?还是有不同或更好的方法来实现这一点?

4

4 回答 4

0

只要您的外键设置正确,以便数据链接到,user_id (PK)那么它应该没问题。或者,您可以设置一个user_roles包含访问权限的表。

于 2013-09-30T05:14:56.443 回答
0

据我所知以及我是如何编程的,是的。如果您正在寻找额外的安全性,也许可以根据数据库中的内容检查用户的密码/盐。

于 2013-09-30T05:15:22.030 回答
0

我需要做的是确保查询仅根据其唯一 ID 提取数据

我不确定你的意思是什么,但这是一个笼统/广泛的陈述,既不好也好。这实际上取决于您正在构建的系统。这绝不是一个普遍适用的说法。

现在,在您当前的设置中,这看起来有些正确,但从长远来看,您可能需要一些数据是公开的,或者至少可以由几个人访问。这在您当前的设计中是不可能的。

我会拆分访问和内容,因为它们是独立的东西。保存哪些用户(或查找基于角色的模式)可以访问单独表中的哪些数据,以便您可以在以后拥有的内容的基础上进行构建,并添加多个用户功能。

这可能会成为一个冗长的讨论,所以我将以此结束:所有数据库设计的底线是您应该以一种代表逻辑单元的方式保存您的信息,就像它在现实世界中一样(是的,我正在这里有一些捷径)。因此,将用户名与 id 耦合似乎很正常。但是在工作和用户之间建立联系本身并不是那么合乎逻辑。一个作业可以对多个用户可见,毫不费力。或者不止一个用户可以添加信息。您可以说只有 1 个用户是工作或任何其他数据的“所有者”,但似乎限制性太强,无法让您的访问控制完全取决于谁“拥有”数据。

但话又说回来,这只是对未来的警告。如果你从不需要这个,你就不需要。

于 2013-09-30T05:16:00.377 回答
0

您可以有多个数据库,每个用户一个。不过,您需要有一种方法来进行架构更改和升级,例如 phinx。除非您预见到用户在自己的帐户上拥有多个用户,否则我不建议这样做。

于 2019-06-11T13:20:15.610 回答