行级用户权限,帮助设计

时间:2009-03-06 21:12:08

标签: security permissions

假设我正在创建论坛应用程序,我了解如何使用Groups设计论坛级权限系统。

即。您可以创建一个论坛来分组映射,并将用户分配给一个组,以授予他们访问特定论坛的权限。

如何优化权限以允许行级权限(或论坛术语,帖子级别)。

1 个答案:

答案 0 :(得分:1)

您可以采用与您已描述的类似方式进行此操作。它需要更多的连接。假设你有一个像这样的结构(我故意不使用约束来使它成为泛型并减少代码量):

CREATE TABLE ForumPost (
PostID int,
ForumID int,
PostText varchar(255)
);

CREATE TABLE ForumUser (
ForumUserID int,
ForumUserName varchar(255),
NumofPosts int
);

CREATE TABLE ForumGroups (
ForumGroupID int,
ForumGroupName varchar(255)
)

CREATE TABLE ForumGroupMembership (
ForumUserID int,
ForumGroupID int
)

CREATE TABLE ForumPermissions (
ForumID int,
ForumGroupID int,
MinPosts int
)

然后,您可以进行多次连接,以确保相应地限制内容:

SELECT FPost.PostID, FPost.ForumID, FPost.PostText
FROM ForumPost FPost
  JOIN ForumPermissions FPerm
    ON FPost.ForumID = FPerm.ForumID
  JOIN ForumGroupMembership FGM
    ON FPerm.ForumGroupID = FGM.ForumGroupID
  JOIN ForumUser FUser
    ON FUser.ForumUserID = FGM.ForumUserID
WHERE FUser.NumOfPosts >= FPerm.MinPosts
  AND FPost.PostID = <Some Number>