技术中台,服务于 无数个 独立的项目。

每个项目,单独对应1个App和appId。

查询和创建等接口,必须提供appId,区分是哪个app的数据。

而技术中台的平台管理端,是管理所有的数据,appId是可选的。

普通项目的管理端,只管理自己的数据,查询数据的时候appId是固定的,是必填的。

这里面有个经验,getById,removeById,通常写法,只需要id  1个参数。

这涉及到 数据权限控制问题,随便传入1个id,把其他项目的数据删了咋办?

所以,这2个方法,也必须带上appId。

一个项目,如果有数据权限,remove和get的时候,必须带上userId。

但是,技术中台这样的项目,去管理 普通项目的权限控制,有很大难度,每个项目的数据权限控制机制不同,很难有通用实现。

所以,数据权限控制 交给项目自己。

技术中台,控制app层面的 数据权限控制。

具体项目-删除1篇文字-伪代码

public void removePost(Integer userId,Integer postId){

     Post post= postService.getById(postId);

    if(post.getUserId() != userId){

     throw new NoPermissionException("");

   }

   tpPostService.remove(appId,postId);

}

以上综述:

1)、userId,具体项目自己的数据权限控制。

2)、appId,技术中台 不同项目之间的数据权限隔离。

3)、还有最常见的token校验,接口调用 需要权限控制。

调用接口之前,用appId、apiCode、password之类的账号密码,获得token。

有token才有接口调用权限,调用时,技术平台还需要检查 该token对应的 app,有哪些 API的权限。

再做1点补充:

4)、remove方法,可能还需要记录  当时的操作用户。

这个 技术中台,可以统一封装。也可以只提供普通的 API,具体项目 自己填写相关字段。

5)、再考虑到,1个接口的2类 业务方

getById,技术中台的管理端,只需要id 一个参数就行。

具体项目,appId必传,必须校验数据权限。

最终落实到 接口,可以放在同1个Service,也可以放在2个Service。

比如:

面向 具体项目的接口

public interface UserService{

void removeById(Integer appId,Integer userId);

}

面向内部技术中台管理端的接口

public interface TpUserService extends UserService{

void  removeById(Integer userId);

}

结论:

通用参数:appId、token(后期加上)

业务参数:userId、User

数据权限控制:技术中台appId、具体项目userId

接口权限控制:token,先提供单独登录接口 login(appId, secret);

天鸟技术/FansUnion/雷哥

2019年11月16日

北京

天鸟技术中台-建设过程-日常经验2:通用参数和数据权限控制相关推荐

  1. 天鸟技术中台-建设过程-日常经验7:核心core业务、非核心core业务、通用基础业务

    在这篇文章" 天鸟技术中台-建设过程-日常经验6:一个系统总是存在,core核心业务和not-core非核心业务 " 中,首次明确提出了,一个系统存在core和非core. 以之前 ...

  2. 天鸟技术中台-建设过程-日常经验1:标准、规范、约定、极简、可读、单一职责、自动化

    1.标准.规范.约定.极简.可读 技术中台,以模块来划分,不同模块,代码总体一致. 因为,中台本来就是要解决类似问题. 不同模型,主要还是CRUD,第1阶段,只考虑not core非核心业务. 核心业 ...

  3. 天鸟技术中台-建设过程-日常经验3:权限控制的进一步思考和细化

    初步方案:技术中台管理接口和 对外提供的接口,统一起来. 1.操作一条数据,必须带上appId. 2.查询,必须带上appId or  不带 appId 现在的接口分2大类,技术中台管理端.(既然存在 ...

  4. 天鸟技术中台-建设过程-日常经验5:MybatisPlus工具代码封装,between-and封装

    技术中台,目前主要就是解决 重复CRUD问题. 数据库底层用MySql,DB框架用 MybatisPlus(今后简称MP). MP封装,分2大类,一种是 纯工具方法,一种是 ServiceImpl类的 ...

  5. 天鸟技术中台-建设过程-日常经验6:一个系统总是存在,core核心业务和not-core非核心业务

    一个系统总是 存在,core和非core,核心业务,非核心业务. 1.电商购物:商品-购物-下单,核心业务. 地址.短信通知.FAQ问答.平台公告等,非核心业务. 2.P2P网贷:注册登录.充值.投标 ...

  6. 技术中台构建思路及进展_半年中台实践思考:落地中台,贵在其神,活用其形...

    今年 9 月份,我参加云栖大会,了解了中台发展的现状和趋势,并和业界同行进行了深入交流.为此,我写了自己第一篇关于中台的文章<向左还是向右?聊聊中台建设中的那些纠结事>.该文章首发于 In ...

  7. 京东服务技术中台:你必须知道的全流程建设方法论!

    大家下午好,我是京东研发总监--贾乐.今天我分享的主题是京东服务技术中台探索与实践,分别从三个方面来讲: 1.为何我们要做中台? 2.京东服务技术中台建设思路: 3.关于中台建设的个人思考. 为何做中 ...

  8. 建设数据中台之前,建议先看这份企业数据能力测评 | 大咖说中台

    作者 | 耿立超 来源 | <大数据平台架构与原型实现:数据中台建设实战> "我的企业目前在数据应用上处于什么水平?接下来应该朝哪个方向努力?"本文试图帮助企业决策者和 ...

  9. 借助第一性原理开启中台建设

    要从第一性原理而不是类比中推理,我认为这一点很重要.在日常生活中,我们总是通过类比来推理.我们要这样做是因为这类似于我们已经在做的另一件事,或者这类似于其他人正在做的事.第一性原理意味着你抛弃一切,直 ...

最新文章

  1. 数据为王的时代,如何用图谱挖掘商业数据背后的宝藏?
  2. centos7重新加载服务的命令_阿粉手把手教你在 CentOS7 下搭建 Jenkins
  3. Spring中经典的9种设计模式,一定要记牢,Java基础教程pdf百度云
  4. Erlang转JAVA,将Erlang UTF-8编码的字符串转换为java.lang.String
  5. mysql库存自动更新_秒杀库存需不需要实时更新到mysql?
  6. HDU2966 In case of failure(浅谈k-d tree)
  7. [Robot Framework] Jenkins上调用Rebot命令时执行报错不往下执行其他命令
  8. 干货|详解最新语音识别框架 深度全序列卷积神经网络
  9. 基于微信公众号的图书借阅管理系统设计与实现
  10. :root选择器的妙用【2021.11.14】
  11. 线性表表长是否要算入头结点
  12. 联通路由器设置FTP服务器,做家庭储存云盘
  13. 巫师编程语言“咒语” 设想
  14. 看着很滑稽,但现实又何尝不是这样呢?
  15. 有关JAVA考试中数据库的题_全国2018年4月自考互联网数据库考试真题
  16. os.path.abspath() 和 os.path.realpath() 区别
  17. 山东春考计算机专业本科学校排名,山东春考大学本科排名及名单
  18. 如何生成一个安卓和苹果手机都能识别的二维码
  19. 多级反馈队列调度算法(c++)
  20. 5月26日来IGS大会腾讯云游戏新文娱分论坛和TcaplusDB约会吧!

热门文章

  1. 统计学基础专栏02---数据和抽样分布
  2. 根据输入时间日期返回时间、昨天、本周几、具体日期 类似于微信朋友圈时间 (msserver 标量值函数 )
  3. 论文笔记——基于多传感器融合的即时定位与地图构建方法研究
  4. 数据存储的四种常见方式
  5. qgraphicsscene 鼠标画直线_游戏鼠标的进阶玩法,驱动深入打磨
  6. 使用zipfile/BytetesIO实现在内存中创建zip压缩文件
  7. DelphiWebMVC框架下BPL热部署实现
  8. LT1910高端MOS管驱动IC
  9. VS2010 对Excel读写操作
  10. Vue 代码模板,用户片段(常用型和完整型)