平台权限设计总览 === **目录索引:** - 权限概念 1. 功能简述 2. 基本概念 3. 权限模型 4. 权限技巧 - 权限对象 1. 用户管理 2. 角色管理 3. 菜单管理 4. 组织机构管理 # 权限设计介绍 ## 一、权限概念 ### 1.功能简述 JEECG封装完善的用户权限模块,支持菜单权限,列表按钮权限,表单字段权限、数据权限等。 数据权限功能已实现极致: 支持行级、列级、字段级控制,实现不同人看不同数据,不同人对同一个页面操作不同字段。系统按钮权限和表单权限原来是正控制,只有授权的人才有权限,未授权看不到对应按钮;(admin拥有超级权限,不受控制) **场景举例: **销售经理可以看下属所有销售人员的数据,销售人员只能看自己的数据。 ### 2.基本概念 权限管理模块涉及到的对象有:用户、角色、组织机构和系统资源(包括系统菜单、页面控件、数据资源等)。系统资源以角色为单位进行管理,用户可以拥有多个角色,角色可以被分配给多个用户;组织机构也可以分配多个角色,机构下的人自动继承相关角色。而权限的意思就是对某个资源的某个操作.一般通用的权限管理模块规定:所谓资源即应用系统中提供的要进行鉴权才能访问的资源(比如各类数据,系统菜单);所谓操作即增加、修改、删除、查询等操作。 ### 3.权限模型 用户权限模型,指的是用来表达用户信息及用户权限信息的数据模型。即能证明“你是谁?”、“你能访问哪些受保护资源?”。 用户与角色之间构成多对多关系。表示同一个用户可以拥有多个角色,一个角色可以被多个用户所拥有。 角色与资源之间构成多对多关系。表示同一个资源可以被多个角色访问,一个角色可以访问多个资源。 ### 4.权限技巧 1.权限拦截排除注解JAuth @JAuth(auth=Permission.SKIP_AUTH) 具体用法: [1]. 类注解表示该类下所有请求直接通过权限url拦截器 [2].方法注解表示该方法的请求直接通过权限url拦截器 2.权限拦截支持请求URL(目前支持带一个参数,但格式有要求,不能带等号) loginController.do?login loginController.do - 不支持模式: loginController.do?name=2 - 带多个参数写法: autoFormController/af/{表单code}/goUpdatePage.do?id={?} 3.admin 拥有超级权限,不受按钮权限和表单权限控制,受数据权限控制。 4.清理垃圾权限配置SQL脚步 delete from t_s_role_function where functionid not in(select id from t_s_function) --- ## 二、权限对象 JEECG权限设计,采用用户、角色、菜单、组织机构来进行组建,角色为主要授权对象,组织机构可以分配角色。 菜单类型分两种:权限类型和菜单类型 * 菜单类型: 菜单类型的菜单,在首页菜单展示和访问使用 * 权限类型: 权限类型的菜单,在首页菜单不做展示,只做权限控制使用 ### 1.用户管理 用户管理,用户可以分配多个角色;也可以隶属于多个组织机构,多个组织机构情况下,登录需要选择机构登录,方便数据权限控制; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16104813_Nk9D.png "在这里输入图片标题") ### 2.角色管理 角色是权限组单位,通过角色管理菜单权限。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16104824_3ITb.png "在这里输入图片标题") ### 3.菜单管理 菜单管理,用来做首页菜单管理和权限管理,权限包括:菜单访问权限、按钮权限、表单权限、数据权限。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16104832_uMkb.png "在这里输入图片标题") ### 4.组织机构管理 组织机构管理,支持集团模式多个分公司,第一级默认是公司类型,从二级开始可设置部门和岗位,部门和岗位通过类型区分;组织机构可以单独设置角色; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16104841_xViA.png "在这里输入图片标题")