权限设计文档

权限需求

禅道编号346 http://chandao.sxfax.com/zentao/task-view-346.html

现有权限只能支持到菜单,需要修改支持到按钮,增删改查,同时要限制到数据级别。不同的业务人员只能看
到自己做的单,领导可以看到所有的数据,渠道经理可以看到他所管辖业务员的单。主管可以看到下面业务员
的单。

需求分解

  • 页面层权限控制(tab页面可以按配置权限来判断是否显示,支持菜单合并功能)
  • 按钮层权限控制(只给某些角色某些权限按钮,其他无此权限按钮的角色进入不可见,即使通过非正常手段可见也不可调用接口)
  • 数据权限控制(高层可一览无余,底层只可孤芳自赏)

影响范围

  • 权限控制需要前后端配合使用,修改后可能会因为某些角色配置没有分配好,可能会影响正常的页面或者按钮的显示和接口调用

总体设计概要

  • sl_menu表新增一个promise字段和一个type字段,type表示控制对象为页面还是按钮 。promise为按钮权限的别名(也可以跟页面公用别名字段,这样就不需要promise字段了)
  • 新增一个权限配置的页面
  • 按钮需要添加到当前菜单目录下
  • 需要配置一个级别编码与菜单名字的映射放到前端配置文件(比如 1301表示小贷业务查询 1301对应SmallLoanBusiness,则前端的权限按钮写法为按钮部分为 <promise data-hasPromise="1301:add" >需要控制权限的部分</promise>,对应模板部分为<#promise hasPromise="1301:add">需要控制权限的部分<#promise>)
  • 通过继承GeneralVarTagBinding类来实现标签设计,全局定义好权限标签
  • 前端模板页面通过权限标签来判断所包含的内容是否需要做权限判断,通过hasPromise来判断是否可显示。
  • 对于不是模板的页面(js打开的弹出框,是没有办法通过页面渲染的方式来控制权限按钮)需要通过data-promise属性来判断是否有权限,弹出页面的方法中包装一个遍历按钮并且遇到权限标签校验权限判断是否显示,这样可以尽量避免修改原来代码。
  • 数据权限可以考虑通过工具包装sql语句的形式或者Dao拦截器方式实现,如果考虑要做数据权限,则权限配置则需要接入业务人员管理

数据表相关设计sl_menu

列名 类型 长度 注释
promise String 64 权限别名
type String 1 类型0 菜单,1按钮

编码要求

  • 权限需要做前后端判断,防止非法调用不能调用的接口
  • 接口校验异常时候,也需要隐藏按钮,尽量不留非法操作的入口
  • 按钮控制尽量使用程序自动校验方式校验,防止人为遗漏

异常情况及处理

  • 获取按钮权限可能出现异常,同样需要隐藏按钮
  • 菜单权限更新保存异常,捕获异常,提示失败
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,638评论 25 709
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,032评论 0 15
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,309评论 6 13
  • 文/云儿飘 现在大四了,还记得初来大学时的信誓旦旦: 每晚放学后,我要去操场跑步,跑5圈(每圈500米。我记得体育...
    云儿飘是我阅读 1,289评论 17 18
  • 感谢上天给了今天一个好天气,不知从何时起只要我们几只聚在一起,去往哪个城市,哪个城市就会下雨,而前两天此处还是阴雨...
    咩一阅读 176评论 0 0