【问题标题】:Row level user permissions, help with design行级用户权限,帮助设计
【发布时间】:2009-03-06 21:12:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: security permissions


    【解决方案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>
    

    【讨论】:

    • 说你想在帖子级别设置权限。这意味着可以查看某些帖子,而您不能查看其他帖子(不是帖子的数量,但我的人只是说此帖子需要比论坛权限更高/不同的权限)。
    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 2012-10-25
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多