授予特定用户对特定(多个)文档的访问权限
Posted
技术标签:
【中文标题】授予特定用户对特定(多个)文档的访问权限【英文标题】:Granting access of specific user to specific (multiple) docs 【发布时间】:2011-06-23 08:35:21 【问题描述】:我正在用数据库构建一个小项目。我有一个用户表,它有两列 user_id
和 name
,第二个表存储一些文档的 id 和名称:它也有两列 doc_id
和 doc_name
。 我想。
例如:
user1
只能访问doc_2
和doc_3
。
user2
只能访问doc_1
和doc_2
等等。
用户和表单不断变化(例如,一段时间后我需要添加一个新文档,并将对现有用户或新用户的访问权限添加到该新文档)。
我需要更改数据库设计吗? (例如在 docs 中添加一列来存储可以访问它的每个用户的名称?)如果是这样,你能告诉我应该做什么更改吗?
或
是否可以通过创建视图来做到这一点?在这种情况下,我还需要更改数据库设计吗?如果是这种情况,你能告诉我一个示例视图吗?在这种情况下,我需要为每个用户创建视图吗?例如,如果有 100 个用户,我需要创建 100 个视图?
【问题讨论】:
【参考方案1】:您需要第三张桌子(我称之为user_doc
)。您需要 2 个主要列; user_id
和 doc_id
。
然后为每个具有访问权限的文档和用户组合插入一行。
如果他们的user_id
没有出现在具有相关doc_id
的user_doc
表中,则他们没有权限。
获取特定用户有权访问的所有文档列表的示例查询:
SELECT doc_id FROM user_doc WHERE user_id = @UserId
或查找所有有权访问特定文档的用户:
SELECT user_id FROM user_doc WHERE doc_id = @DocId
【讨论】:
您可以使用视图来表示用户及其权限,但您仍然需要创建第三个表并相应地填充它。只有当视图有一些不可靠的数据要表示时,它们才能使用。【参考方案2】:您需要有一个包含用户和文档之间关系的 PERMISSIONS 表。这些列可以是 PERMISSIONS_ID、USER_ID(参考用户)、DOC_ID(参考文档)。每次必须向用户授予对文档的访问权限时,都需要填充此表。
【讨论】:
以上是关于授予特定用户对特定(多个)文档的访问权限的主要内容,如果未能解决你的问题,请参考以下文章