【咕笛说项目 | 前端权限设计从入门到上手】之零:前端权限设计概述
权限模块的设计是一个系统级、多维度的设计过程,在正式的软件开发中,都会涉及到。【咕笛说项目 | 前端权限设计从入门到上手】系列将带领大家一起学习权限控制的基础开发方法和思路。
一个完整的软件项目开发,必然涉及到权限控制的部分,特别是在开发后台管理系统的项目中,权限的设计几乎要贯穿整个开发过程,早在软件设计阶段就要预留出相应的接口。
在权限设计中,我们一般涉及到以下几个层次的权限范围(但并非每个项目都要应用以下全部的权限,视项目的规模和业务复杂性而不同,比如简单的项目只会涉及到菜单权限)
令牌权限:
用户登录到系统时,会给用户一个唯一的令牌(token)。在登陆之后,用户所有与后台进行的数据交互都是以token的有效性为前提,后台会进行token的有效性(是否合法、是否在有效期)进行校验,通过则返回请求的数据,否则返回未授权消息状态(一般是401状态码)。
菜单权限:
当前的登陆用户可以有权访问到哪些菜单或者显示哪些菜单。
页面权限:
可以设置当前用户有权访问的模块或者页面,如果没有该页面的访问权限,会跳到未授权页面或者强制登出到登陆页。
按钮权限:
对于单一页面中某一些具体功能进行权限控制,根据权限设置来决定按钮的可用性或可见性。当然,这里不仅限于按钮控制,还可以对页面中某一块功能进行控制。
数据权限:
以上的菜单权限、页面权限、按钮权限都是前端对权限的控制范围。同样的,后台也需要对权限进行更进一步的控制,也就是数据权限控制。
数据权限控制一般分为API级权限和资源级权限。
-
API级权限:
在API接口级别控制API的调用权限,如果没有权限直接在网关层进行阻止。
-
资源级权限:
资源也就是数据表或者数据表视图,可以在资源级权限中控制允许查询出的数据集。资源级权限又可以分为行权限和列权限:
-
行权限:
可以通过限定某些条件,来返回特定的查询结果集,例如:
-
只返回当前用户所在部门的数据
-
只返回当前用户自己添加的数据
-
返回某几个部门的数据(领导的权限)
-
返回当前用户的下属所添加的数据(这个人可能是个领导)
-
列权限:
一些特定的字段只能由一些特定权限的人才能查看,比如说:
-
员工表的基础字段可以公开,但是工资字段只能人事部门才能查看。
-
营销人员只能看到合同表中一部分与销售有关的字段
-
生产人员只能看到合同的规格型号的字段,订单的字段是无权查看的。
除了以上的权限的分层以外,我们常常还会引入“角色”的概念,可以理解为一个特定权限的集合体,不但可以将这个角色应用于用户,也可以应用于组(GROUP)、部门(TEAM)等。
【咕笛说项目 | 前端权限设计从入门到上手】系列的教程,咕笛老师将从【令牌权限】、【菜单权限】、【页面权限】、【按钮权限】、【数据权限之API权限】、【数据权限之资源权限】、【数据权限之角色】这几个维度来全面介绍如何在前端项目中去规划设计和实现权限控制,希望可以对你的前端开发之路有所启迪~
原文链接:http://www.gudii.cn/post/17.html
欢迎持续关注~