目标任务
-
抽象权限校验的主要流程
-
将权限校验的完成场景进行总结,定义一套标准的权限校验流程
-
使用时序图来说明其他系统是以怎样的顺序和我们的系统进行交互的
-
-
casbin数据存储
-
了解casbin如何对策略、匹配规则等进行持久化
-
-
基于GRPC提供服务
-
了解grpc
-
基于权限校验流程定义proto文件,将接口提供出来
-
抽象权限校验的主要流程
权限校验流程
1、建模与提交模型
客户根据实际情况进行建模,模型一旦建立就不可改变。客户建立完模型以后要将模型提供给我们,需要发送的数据包括该模型针对的主体、对象、操作和它们之间的关系,匹配规则等,这些都是一旦确定就不能变动的。同时,客户还需要发送初始的策略,例如某某拥有某某权限,这由我们后台负责保存并维护,客户也可以根据实际情况后续更新策略。
2、客户请求权限判断
客户如果需要对某个行为进行权限判断,就按照模型的要求发送各个主体的信息给我们,我们再根据模型和后台中的策略,检测是否匹配,给出判断,然后再发送回给客户。
3、客户更新权限策略
根据实际情况,客户可以随时更新权限策略的数据,比如增加或删减某些权限,客户将这些数据发送给我们后我们就对原有的数据进行更新。
时序图
casbin数据存储
Model存储
-
model只能加载不能存储,不能在运行时动态修改model的定义,model一旦确定后将不能在运行时改变
-
有三种方式能够动态或静态的加载model
-
从 .CONF 文件加载模型,提前将model定义在一个.conf文件里面,然后在创建casbin的运行器时从conf文件中加载model
-
从代码加载model,在代码中通过一些函数来添加model
-
从字符串中加载,直接将mode的定义用一个字符串表示出来,然后在代码中进行加载
-
-
参考链接
Policy存储
-
casbin通过adapter来实现对policy的持久性存储
-
Casbin的用户可以调用adapter的LoadPolicy()方法从持久层中加载policy规则, 同样也可以调用SavePolicy()方法将Policy规则保存到持久层中 。 为了保持代码轻量, 我们没有将adapter的代码放在主库中。
基于GRPC提供服务
了解grpc
相关概念
-
RPC
-
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
-
RPC 是一种技术思想而非一种规范或协议
-
-
grpc
-
gRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。
-
和很多RPC系统一样,服务端负责实现定义好的接口并处理客户端的请求,客户端根据接口描述直接调用需要的服务。
-
-
grpc有4种请求和响应模式
-
简单模式(Simple RPC)
-
服务端流式(Server-side streaming RPC)
-
客户端流式(Client-side streaming RPC)
-
双向流式(Bidirectional streaming RPC)
-
-
-
protobuf
-
是一种序列化数据结构的协议。
-
......
-