本文讲解4.0版的jxTMS中python服务的权限管理,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容
docker版本的使用,请参考:docker版jxTMS使用指南
4.0版的jxTMS中python服务内置了强大的权限管理。其包括三个部分:
资源配置
用户配置
权限管理
权限管理用一句话来说就是:某用户能否对某资源执行某个操作。
但是,由于用户可能会很多、资源也可能有很多,再加上各资源可能支持多种操作,如果直接用户对资源的进行权限管理,那不但繁琐,更可能会诱发各种错漏。
所以,一般情况下,用户指派各种角色、资源归入各资源组,然后以角色对资源组的操作权限进行管理,这就大大简化了权限管理的负担。
当然,直接设置用户对资源的操作权限也是可以的,而且这种设置被认为属于明确指定,只要命中就会直接应用。而角色到资源组的权限管控被认为是隐含指定,只有一个用户的所有角色都没有权限来执行时才会判定无权执行对该资源的操作。
此外,资源和资源组都可以设置默认权限,即当检查本资源或资源组对某人的权限时,未命中时的默认许可。
当未命中时,资源的默认权限就会起效,而资源组的默认权限则只有是许可的才会起效。
权限管理应在jxTMS平台上执行,不建议在python服务中用命令行的方式进行。
在jxTMS平台上进行权限管理的步骤是:
1、创建角色
2、创建用户
3、查看用户时,映射角色
4、查看用户时,下发用户配置
5、创建资源组
6、创建资源
7、查看资源时,添加到资源组
8、查看资源时,下发资源配置
9、添加操作权限
10、如果操作权限是设置给资源的,则在查看资源时,下发操作权限配置
11、如果操作权限是设置给资源组的,则在查看资源组时,下发操作权限配置
看起来可能觉得的很繁琐,但配置好【主要是角色到资源组的操作权限】后,实际上:
1、有新的用户,则创建用户并映射角色后,下发用户配置即可
2、有新的资源,则创建资源并添加到资源组后,下发用户资源即可
3、增加新的操作,则配置操作权限,然后在该操作的目标资源组的查看界面下发操作权限配置即可
权限的使用,主要是通过用户的access对象函数:
access(self, op, resID, params)
参数:
op:操作名
resID:资源名
params:参数
返回:
result:操作结果,未授权等返回None
rc:类http状态码,200,ok;403,无权执行;404,未定义的op
msg:非200时的错误消息
即本用户想操作某资源,jxTMS会检查该用户是否有权对该资源是否具备op的操作权限。如果许可,则执行该op对应的操作函数,如果不许可则返回403拒绝。
而操作需要先用auth.registerFunc进行注册:
registerOP(cls, opName, opFunc):
参数:
opName:操作名
opFunc:对应的操作函数
返回:
无
opFunc的签名应是:
opFunc_xxxx(user,resID,params)
参数:
user:调用本函数的用户对象
resID:该用户想操作的资源名
params:参数
返回:
type:本操作的类型,该类型随后将被用于数据转换策略以决定对操作结果如何转换
result:操作结果,未授权等返回None
rc:类http状态码,200,ok;403,无权执行;404,未定义的op
msg:非200时的错误消息
相关示例可参考app/dualResult_vrs20.py文件中读取设备数据的实现。
参考资料:
jxTMS设计思想
jxTMS编程手册
下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:
如何用jxTMS开发一个功能
下面的系列文章讲述了jxTMS的一些基本开发能力:
jxTMS的HelloWorld