简单的权限管理系统

一丶数据库的设计

以下是需要的表:
   
        1.人员表                     2.角色表                   3.菜单表            4.操作方法表(菜单的操作方法)   

        5.人员角色中间表      6.菜单操作方法中间表        7.菜单-操作方法-角色 中间表

 数据库的字段:

  人员表(SysPerson): ID   主键        Name  名称           PassWord 密码             CreateTime  时间
  角色表(SysRole):ID   主键           Name   名称           Desc     描述             CreateTime   时间
  菜单表(SysMenu):ID   主键           Name   名称           ParentId  上级菜单        CreateTime 时间
  操作方法表(SysOperation):ID 主键 Name 名称 Function 方法 Iconic 图标 Remark 描述  CreateTime 时间 
  人员角色中间表(SysRoleSysPerson):SysPersonId 人员ID         SysRoleId  角色ID    
  菜单操作方法中间表(SysMenuSysOperation):SysMenuId  菜单ID    SysOperationId 操作方法ID
  菜单-操作方法-角色中间表(SysMenuSysRoleSysOperation):Id 主键 SysMenuId 菜单 SysOperationId 操作方法  SysRoleId角色


二丶SQL语句测试


1.添加人员(Sysperson)

insert SysPerson(Name,Password,createTime) VALUES('pyx','123456',GETDATE())
SELECT Id,Name,Password,CreateTime from SysPerson


2.添加角色(SysRole)

insert SysRole VALUES('超级管理员','具有全部的菜单和操作',GETDATE())
SELECT Id,Name,[Description] as [Desc],CreateTime from SysRole
简单的权限管理系统_第1张图片

3.人员绑定角色  往SysRoleSysPerson绑定数据

INSERT SysRoleSysPerson VALUES('16072917555634820201f8ba5c925','1307311605187265267d33f281da6')//这两条数据是刚刚插入的人员和角色ID


 查询人员对应的角色

SELECT SysPersonId,SysroleID,roles.Name as SysRoleName,person.Name as SysPersonName From SysRoleSysPerson sysroleperson LEFT JOIN SysPerson person ON person.Id=sysroleperson.SysPersonId LEFT JOIN SysRole roles on roles.Id=sysroleperson.SysRoleId




4.添加菜单(SysMenu)

 insert SysMenu values('系统设置',NULL,GETDATE())   --当前返回的ID为  160728135905832558848862ae11d               insert SysMenu values('人员管理','160728135905832558848862ae11d',GETDATE())  

 查询新建的菜单

SELECT  Id,Name,ParentId,CreateTime from SysMenu 

简单的权限管理系统_第2张图片


5.添加操作方法(SysOperation)

 insert SysOperation VALUES('创建','flexiCreate','btn btn-success',NULL,GETDATE())
 insert SysOperation VALUES('修改','flexiEdit','btn btn-primary',NULL,GETDATE())

 查询新建的操作方法

select Id,Name,[Function],Iconic,Remark,CreateTime from SysOperation





6.菜单绑定操作方法(SysMenuSysOperation)

insert SysMenuSysOperation VALUES('160728135939064459621fd0eb6f1','1310181134390713796477e27c097') --人员管理-创建方法
insert SysMenuSysOperation VALUES('160728135939064459621fd0eb6f1','131018155411503738459acd560d4') --人员管理-修改方法

 查询菜单对应的方法


SELECT sysmp.SysMenuId,sysmp.SysOperationId,menu.Name,op.Name From SysMenuSysOperation sysmp LEFT JOIN SysMenu menu on menu.Id=sysmp.SysMenuId LEFT JOIN SysOperation op ON op.Id=sysmp.SysOperationId 
简单的权限管理系统_第3张图片


7. 菜单-操作方法-角色 中间表(SysMenuSysRoleSysOperation)
  当往这张表插入数据的时候,查询出当前角色  角色里面包含了哪些菜单   菜单包含了哪些操作方法
  往里面添加一组数据:当前角色为超级管理员(也就是上面添加的角色)  
   
 
 首先默认给超级管理添加一些菜单和菜单对应的操作方法
--这个时候我们从 SysMenuSysOperation 查询出系统设置 没有对应的其他操作方法,所有就只有对应的一个菜单

INSERT SysMenuSysRoleSysOperation VALUES('160728135905832558848862ae11d',NULL,'1307311605187265267d33f281da6') --超管理员拥有查看系统设置权限

--这个时候我们从 SysMenuSysOperation 查询人员管理 管理拥有哪些操作方法 刚刚我们第六步就操作了  绑定了两个方法 创建和修改

INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1',NULL,'1307311605187265267d33f281da6')--超管理员拥有查看人员管理权限

INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1','1310181134390713796477e27c097','1307311605187265267d33f281da6')--超管理员拥有人员管理 创建权限

INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1','131018155411503738459acd560d4','1307311605187265267d33f281da6')--超管理员拥有人员管理 修改权限

 到这个位置,一个简单的权限系统就配置好了。
 


 现在我们获取 超级管理员角色的一级菜单

select sro.Id,sro.SysMenuId,sysm.Name,sro.SysOperationId from  [dbo].[SysMenuSysRoleSysOperation] sro RIGHT join SysMenu sysm on sysm.Id=sro.SysMenuId where 1=1  and sro.SysOperationId is null(操作方法为空表示当前( SysMenuSysRoleSysOperation)这张中间表里面的查看菜单权限存在)  and sysm.ParentId is null(ParentId为NULL就表示为一级菜单) AND sro.SysRoleId='1307311605187265267d33f281da6' 

当前角色的一级菜单



获取二级菜单

select sro.Id,sro.SysMenuId,sysm.Name,sro.SysOperationId from  [dbo].[SysMenuSysRoleSysOperation] sro RIGHT join SysMenu sysm on sysm.Id=sro.SysMenuId where 1=1  and sro.SysOperationId is null  and sysm.ParentId ='160728135905832558848862ae11d'(父菜单ID) AND sro.SysRoleId='1307311605187265267d33f281da6' 


简单的权限管理系统_第4张图片

通过菜单和角色获取对应的操作方法


select op.* From SysMenuSysRoleSysOperation roleop RIGHT JOIN SysOperation op ON op.Id=SysOperationId WHERE 1=1  and roleop.SysMenuId='160728135939064459621fd0eb6f1' AND  roleop.SysRoleId='1307311605187265267d33f281da6'




暂时就记录这些。。~~~~~~~~~~~~~

你可能感兴趣的:(数据库)