zoukankan      html  css  js  c++  java
  • 【权限设计】如何以“用户”为单位的进行权限设计(一)

    最近公司发生一件大事:公司一员工,窃取网站后台管理功能资源以及网站销售额等数据,事后发现是敌对公司派人有意所为。电视剧场景在现实重演,有些吃惊,为防止此类事情再次发生,临危受命,针对权限管理进行重构。

    为何有权限设计的需求

    禁止非法用户盗取资源

    访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,每一台计算机具备浏览器,如果不建立一个完整的权限检测,那么一个非法用户可以轻而易举通过浏览器访问Web应用项目中的所有功能资源。

    保证数据的保密性

    公司内部员工的角色不同,自然对于系统使用功能的权限不一样,关于机密数据的列表菜单是不能允许让所有人进行访问的。

    比如:一个电商网站的销售额等报表数据,是不允许公司内所有员工都进行查阅的,有针对地进行管理。

    权限设计的方式有哪些?

    • 以“用户”为单位的权限设计
    • 以“权限”为单位的权限设计
    • 以“用户”与“权限”结合的权限设计

    针对以上三种类型,结合业务场景以及具体设计方式,详细进行讲解。

    以“用户”为单位的权限设计

    适用的业务场景

    当使用该系统的人之中,存在很多拥有同一类权限的人,将拥有同一类权限的人定义为“角色”或者“部门”等其他称号,而这个集合的称号就是定义权限的集合体。

    举例:在公司内部,运营部人员拥有查询报表的权限,客服部人员拥有审核商品评论的权限,而运营部人员和客服部人员人数众多,且权限一致,那么以“用户”为单位的权限设计更符合业务需求。

    如何进行设计?

    1、信息架构图

    用户:添加用户过程中,分配至某一个部门,该部门拥有的权限就是该用户的权限

    部门:添加部门时,除填写部门基本资料外,对该部门定义具体权限

    2、业务流程图

    具体流程:添加部门,给部门设置权限,添加用户时,设置所属部门,部门的权限即是该用户的权限。

    3、具体原型图设计

    添加部门:

    添加用户:

    由于公司内部资料的保密性,我纯手打两分钟,撸了个最简单的示意图进行参照,其设计方式相信一看即懂。

    关于此方法的权限设计疑问

    1.权限的类型有哪些?

    权限分为菜单功能和特殊项区分权限。

    菜单功能权限:为一个用户设置权限,该用户所属部门为运营部,运营部的权限设置中,勾选报表管理,但是未勾选导出报表。

    那么该用户进入该系统,能看到菜单页,但是无法看到导出报表的按钮,因为没有改权限。

    特殊项区分权限:有这样一个业务场景,该后台系统管理几个电商网站,我不希望A网站的运营人员看到B网站的销售额数据,同理,B网站的运营人员看不到A网站的销售额数据,似乎菜单功能权限不能为我们解决此问题。

    那么,我们分两步走:

    1、在给部门设置权限的页面,加上特殊项区分权限。

    2、找出与此特殊项区分权限所有相关的页面,进行展示并进行标记。

    以上为报表详情页,如果该用户所在部门的权限中,勾选了A站、B站以及C站的权限,那么在报表详情页中的搜索选项,出现的站点为权限勾选的网站,如果未勾选任何网站,那么相应地,报表详情页中查看不到任何网站的数据。

    需要记住一点的是,涉及到特殊项区分权限的页面很多,产品经理需要全部找出,并进行合理的设计展示,完善方案后给到开发,进行代码的实现。

    3.当遇到一个部门内部,必须针对不同的人设置不一样的权限,如何处理?

    业务场景:一个后台管理系统管理众多电商网站的评论,客服部人员内部进行分工,1号客服负责A网站的评论审核,2号客服负责B网站的评论审核,3号客服负责C网站的评论审核,那么问题来了。

    1号、2号、3号客服同属于一个部门,他们所拥有的权限不一样,你如何进行处理?

    大部分人会想到一个解决方案:那就帮2号、3号客服再次新建一个部门,一个部门一个权限可以解决。

    但是,这是有弊端的:

    • 试想这种业务场景足够多的话,那么会造成的结果是:你的部门列表会有一堆重复的部门,部门之间也无法进行区分,显得页面非常乱。
    • 有些重复的部门下只有一两个人,非常不利于进行管理

    此路不通,怎么解决?

    方法是制造一个二级部门的概念,部门太大需要在小组内再区分,就增加三级部门的概念。

    三级部门属于二级部门,二级部门属于一级部门,针对现实的状况进行区分。

    在添加部门时,选择一级部门时,如图所示:

    选择二级部门时,如果所示:

    选择不一样的部门类型,进行添加,针对部门进行权限设置,也更方便解决会有重复部门以及页面会很乱的情况。

    一个部门内部,必须针对不同的人设置不一样的权限,此类场景根据频次进行处理,有以下类型:

    • 此类场景频次极少,直接添加新部门,设置权限
    • 此类场景频次较多,增加二级部门或三级部门的方式,设置权限
    • 此类场景频次特别多,走个极端,一个团队一个人拥有一种权限,怎么办???

    第三种业务场景中在现实中是大量存在的,特别是国家机关的工作系统,保密性是非常有必要的,如果我们使用以“用户”为单位的权限设计,其中涉及的部门根本毫无作用,一个人一个部门,这是非常可笑的,那么我们应该如何进行处理此种情况?

    延伸阅读:

    【权限设计】一个案例,三个角色,简单说下B端产品的权限设计 

    【权限设计】如何以“用户”为单位的进行权限设计(一)

    【权限设计】如何以“权限”为单位的进行权限设计(二)

    摘自:

    http://www.woshipm.com/pd/571733.html

  • 相关阅读:
    BibTex (.bib) 文件的凝视
    SQL注入原理解说,非常不错!
    怎样将文件隐藏在图片中
    白话经典算法系列之五 归并排序的实现
    帮你理解多线程
    很好的理解遗传算法的样例
    薏米红豆粥功效及做法介绍
    Linux makefile 教程 很具体,且易懂
    站点权重对于站点的重要性
    Codeforces Round #250 (Div. 2)——The Child and Set
  • 原文地址:https://www.cnblogs.com/52php/p/6277719.html
Copyright © 2011-2022 走看看