【发布时间】:2009-03-06 21:12:08
【问题描述】:
假设我正在创建一个论坛应用程序,我了解如何使用 Groups 设计一个论坛级别的权限系统。
即您创建一个论坛到群组的映射,并将用户分配到一个群组以授予他们访问特定论坛的权限。
如何优化权限以允许行级权限(或论坛术语,帖子级)。
【问题讨论】:
标签: security permissions
假设我正在创建一个论坛应用程序,我了解如何使用 Groups 设计一个论坛级别的权限系统。
即您创建一个论坛到群组的映射,并将用户分配到一个群组以授予他们访问特定论坛的权限。
如何优化权限以允许行级权限(或论坛术语,帖子级)。
【问题讨论】:
标签: security permissions
您可以按照您已经描述的类似方式执行此操作。它需要更多的连接。假设你有一个这样的结构(我故意避开约束以使其通用并减少代码量):
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>
【讨论】: