我正在尝试创建一个基于角色的访问权限,其中一个用户可以拥有一个或多个UserGroup,并映射到Roles。
I have the following tables:
UserRole
CREATE TABLE [User_Role](
[id] [int] NOT NULL,
[name] [varchar](255) NOT NULL
) ON [PRIMARY]
UserGroup:
CREATE TABLE User_Group(
[id] [int] NOT NULL,
[name] [varchar](255) NOT NULL,
[roleId] [int] NOT NULL
) ON [PRIMARY]
方案1的预期结果:
用户有userG1,userG2。查询返回role1,role2
"select * from Role where Role.id=UserGroup.roleId" should be ok.
方案2: 用户有userG1,userG3。由于用户具有userG1和userG3,因此查询应返回role1,role3和rol4。
我正在考虑以下解决方案: 映射表Role_UserGroup_Map-
CREATE TABLE Role_UserGroup_Map(
[roleId] [int] NOT NULL,
[userGroups] [varchar](255) NOT NULL
) ON [PRIMARY]
映射将包含userGroup到Role的所有组合。我的SQL将使用AND检查“赞”,以返回Roleid
我不确定如何表示数据并查询数据以获取“合并到角色中的组”。如果有人可以提供有关表/数据放置以及查询的想法,那将是非常有帮助的!
目标是,如果我添加任何新的UserGroup,它将被映射到新的角色,并且如果用户有其他UserGroup访问,则可以将其映射到现有的Roles。