当前位置: 首页 > news >正文

电脑网站制作有关网站开发的参考文献

电脑网站制作,有关网站开发的参考文献,wordpress转发插件,最新新闻热点事件素材2022本文讲解4.4版jxTMS中如何自行定义一个频率型的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看&#xff…

本文讲解4.4版jxTMS中如何自行定义一个频率型的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容

docker版本的使用,请查看:docker版jxTMS使用指南

4.0版jxTMS的说明,请查看:4.0版升级内容

4.2版jxTMS的说明,请查看:4.2版升级内容

上篇文章中我们讲解了jxTMS的动态管控,本文则展示一个自定义的频率型动态管控的实现。

如果开发者针对自己的需要也想实现某种频率型的管控,可利用jxTMS内置的频率控制对象frequency。

引用:

form jx.auth import frequency

其构造函数为:

class frequency:def __init__(self, checkItem, max=10, checkPeriodSeconds=60,exceedLimit=100, exceedDual=None)#checkItem:该频率管控的对象名,如用户名、资源ID等#max:上文中的限额#checkPeriodSeconds:上文中的限制周期#exceedLimit:上文中的超频数#exceedDual:超频后的回调处理函数,其函数签名为:#  exceedDual(checkItem)

我们举个例子:

class demoCheck:_accessFrequency = {}@classmethoddef frequencySet(cls, userName, max=10, checkPeriodSeconds=60,exceedLimit=100, exceedDual=None):rl = cls.__dict__['_accessFrequency']#此处设置了超频时的处置函数为本类的_exceedDual函数rl[userName] = frequency(userName, max=max, checkPeriodSeconds=checkPeriodSeconds,exceedLimit=exceedLimit, exceedDual=cls._exceedDual)#用于上篇文章中所介绍的全面检查@classmethoddef check_frequency_forSystem(cls, u, op, resID):fl = cls.__dict__['_accessFrequency']#需要开发者自己来决定挑选哪些用户来执行自己的频率限制审查b = needCheck(u,op,resID)if b:#根据业务需要执行频率检查f = fl.get(u.name(),None)if f is None:#防止扫描return False,f'[{u._name}]访问频率超过预期'b = f.check()if not b:return False,f'[{u._name}]访问频率超过预期'return True,None#用于上篇文章中所介绍的指定检查@classmethoddef check_frequency_forMe(cls, myName, op, resID):fl = cls.__dict__['_accessFrequency']f = fl.get(myName,None)if f is None:#防止扫描return False,f'[{myName}]访问频率超过预期'b = f.check()if b:return True,Nonereturn False,f'[{myName}]访问频率超过预期'#超频时的处置@classmethoddef _exceedDual(cls, userName):#超频了,踢出并阻止登录user.preventUser(userName)msg = f'用户【{userName}】操作过于频繁,阻止12小时'jxGo.log('warn',msg)

根据自己的业务需要,可随时通过执行下面的语句来添加自己的频率型动态管控:

demoCheck.frequencySet(objName,...限额等参数...)

对自己定义的该管控措施,其可部署的检查点有两种:

1、利用系统内置的卡控来统一触发,通过执行:

user.setDynamicallyCheck('自己的动态管控名',demoCheck.check_frequency_forSystem)

不需再做其它任何处置,系统即会自动在全面检查时调用demoCheck.check_frequency_forSystem函数来完成自己的频率型管控。

2、自己在业务操作过程中,自行执行频率管控的检查,通过执行:

user.setDynamicallyCheck('自己的动态管控名',demoCheck.check_frequency_forMe)

此种方式需手动触发动态管控的执行,因此需再自己的业务处理函数中执行:

...业务操作的预备动作
b,msg = user.specialCheck('自己的动态管控名',currentUser,操作名,资源ID)
if not b:rm = f'用户[{currentUser.fullname()}]执行操作【{操作名}】未通过频率审查:{msg}'jxGo.log('warn', rm)return None,rm
...通过了频率管控的审查,继续执行

同时,使用此种方式来调度自己定义的动态管控,需要在系统统一调度时排除掉【自己的动态管控名】,否则【自己的动态管控名】会在系统内置的卡控点被统一触发,从而造成期望之外的审查,可能会导致其它用户都被阻止!

要避免此种情况的出现,需执行:

user.notDoDynamicallyCheck('自己的动态管控名')

第一种方式属于全局执行,所以check_frequency_forSystem要有一个识别用户的needCheck【自己定义】函数来进行用户的识别,默认则是放行;第二种方式属于针对性执行,所以不需要用户的识别,默认则是拒绝。

也正是由于后者是针对性执行,所以必须调用notDoDynamicallyCheck将其从全局执行中剔除,切切!

超频后临时阻止用户

在demoCheck的frequencySet中设置了超频时的处理函数:demoCheck._exceedDual。其利用了user类提供的preventUser函数来临时阻止超频的用户。

preventUser函数会将该用户临时加入到黑名单中【这会导致该用户立刻无法访问以及登录】,默认12个小时后再自动将用户移出黑名单。这个临时阻止的时长可调:

def preventUser(cls,userName,Hours=12):

即开发者在调用user.preventUser临时阻止用户时,通过设置Hours可将该用户阻止对应的小时数【为了提高效率,移出黑名单是由系统统一调度执行的,所以具体的阻止时长,大约是指定时长后的1小时左右,即指定了10小时,大约是在11个小时左右】。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

http://www.yayakq.cn/news/836102/

相关文章:

  • 企业管理培训公司排名惠州市企业网站seo营销工具
  • 辽宁省城乡住房和建设厅网站上海ktv最新通知
  • 外贸建站的公司建设网站呼叫中心有什么好处
  • 新手学做网站优化怎样做一个自己的网站
  • 贵阳网站建设加q479185700wordpress logo修改
  • 网站收录查询爱站社群营销的十大步骤
  • 宁夏网站建设联系电话互联网做网站怎么赚钱
  • 网站运营及推广方案南昌网站建设方案报价
  • 自助建站软件下载网上购物平台排行
  • 有专业设计网站吗西北苗木网陕西泽基生态建设有限公司网站
  • 网站推广工作计划唐山app开发公司
  • 成都网站建设与网站制作邢台企业做网站多少钱
  • 腾讯建站官网广告制作公司注册
  • 百度商桥怎么添加到网站企业宣传网站制作
  • 购物网站建设成本wordpress仿主题
  • 模板网站缺点建设银行e路通网站
  • 福建设计院网站跨境贸易公司名字
  • 朝阳网站建设是什么意思优化排名软件
  • 网站推广的要点响应式网站建设的优势
  • 招聘网站免费平台设计公司装修图
  • 中装建设网站我有域名和服务器找人建设网站
  • php网站服务建设wordpress建站访问提示不安全
  • 网站的友情链接是什么意思办公用品网站模板
  • 建个企业网站wordpress wpzoom
  • saas是不是做网站织梦网站反应速度慢
  • 国内做免费视频网站网站搭建平台demo免费
  • 传媒在线网站模板动易网站风格免费下载
  • 铜陵高端网站建设制作网站先做前端还是后端
  • 国际网站怎么做优化用户体验较好的网站
  • 如何快速增加网站收录做头像的网站