• 权限设计


    一、RBAC模型的权限设计(基于角色的访问控制(Role-Based Access Control))

    参考资料

    扩展RBAC用户角色权限设计方案

    自己参考项目经验和网络资料总结出来的,权限管理源代码参考项目StudyNoteOfCsharp,该项目在完成后我会传到GITHUB上。

    --拥有权限的对象表集
    create table [user]--用户,用户包括了角色
    (
    	[user_id] int identity(1,1) primary key,
    	name varchar(20)
    )
    
    create table role--角色
    (
    	role_id int identity(1,1) primary key,
    	name varchar(20)
    )
    
    create table [group]--组,组包括了用户
    (
    	group_id int identity(1,1) primary key,
    	name varchar(20)
    )
    
    create table user_role--用户所拥有角色表,多对多关系
    (
    	[user_id] int foreign key references [user]([user_id]),
    	role_id int foreign key references [role]([role_id])
    )
    
    create user_group--用户所属组表,多对多关系
    (
    	[user_id] int foreign key references [user]([user_id]),
    	role_id int foreign key references [group]([group_id])
    )
    
    
    
    ----需要用权限来管理的对象,如果菜单,功能,等
    create table menu(--菜单,是否有权限访问或是看到菜单
    id int identity(1,1) primary key,--自增加
    parent_id int,---父菜单
    name varchar(50),--菜单名
    form_url varchar(100),---窗体地址
    sort int,--排序号
    ) 
    
    --功能操作表,如在一个菜单下的调出来的界面上有多个功能操作,只允许某部分功能的权限
    create table operation
    (
    id int identity(1,1) primary key,--功能id
    parent_id int,--父功能id
    name varchar(100),--功能操作名字
    )
    
    
    --权限表,注册各资源、操作、菜单的权限
    create table authority
    (
    id int identity(1,1) primary key,--权限id
    [type] varchar(20),---权限类型,如菜单权限,功能操作权限,建议用表名的字符串做为值
    re_id int,---对应用menu或是operation的id号
    )
    
    
    --对象权限表,管理人员、角色、组的权限
    create table object_authority
    (
    object_type varchar(10),---如对应user,role,group,建议用表名的字符串做为值
    [object_id] int ,---对象user,role,group的id
    authority_id int,--对应authority的id
    )
    --要查看一个人的权限:从object_authority里找到该用户所属组的权限+该用户所拥有角色的权限+自身的权限
    

      

  • 相关阅读:
    团队开发中Git冲突解决
    Eclipse使用Git管理项目
    mapper.xml文件中标签不显示问题
    GO语言打包ICO图标
    如何创建 Visual Studio 2017 RC 离线安装包
    Redis系列-远程连接redis并给redis加锁
    Redis开启远程登录连接。
    Redis作为多个Windows服务运行配置方法
    Java课程设计---安装Mysql及管理工具
    Java多线程编程核心技术---多线程技能
  • 原文地址:https://www.cnblogs.com/shengyu-kmust/p/4519318.html
Copyright © 2020-2023  润新知