文档访问权限

时间:2012-09-07 21:13:07

标签: php mysql

我有一个简单的文档管理系统,目前基于公司ID提供对文档的“公共”访问 - 我希望逐个用户地实现访问控制。我很高兴如何在PHP中检查访问权限等,但不确定如何以有效的方式最好地维护表中的已批准用户。

文档可以具有仅限x用户的公共访问权限或私有访问权限,因为我不知道x的值,所以在MySql中实现名为user1,user2等的多个字段没有意义。

有一个表已经被称为用户,一个被称为文档。一个名为用户文档的新表是否有意义或是否有更好的方法来实现这一点,以便我可以检查用户是否有权访问该文档,如果他们试图?

1 个答案:

答案 0 :(得分:1)

最好的方法是使用链接表,例如

table #1: users (id, ...)
table #2: documents (id, ....)

table #3: user_documents (user_id, document_id)

其中user_id和document_id是指向用户和文档表的外键

如果user_documents中存在记录,则用户可以访问该文档。如果您需要实现各种级别的访问(读/写/等..),您可以将其存储在user_documents表中以及其他字段中。

相比之下,如果你有像

这样的东西
table #1: users (id, doc1, doc2, doc3, etc...)

doc#fields指向此用户有权访问的文档,您必须在表中包含N个字段才能处理N个文档的权限。如果只有少数用户拥有N个文档的权限,而且大多数用户拥有的权限要少得多,那么您将在未使用的字段上浪费大量空间。总会有一些小丑需要N + 1个文件,这意味着你每次都要修改你的桌子。

使用链接表,您只有2个字段,并且只有与用户/文档访问对一样多的记录。