apache钩子模块开发

背景:
现项目下,有这样一个需求,当用户访问的是特定域名时跳转到登陆界面输入密码,验证成功后,在40分钟内可以正常浏览界面,以此循环。
首先需要前端做好相关界面,且后台要提供一个校验密码的接口,后台在校验成功需写入相关记录。
在此基础上开始开发apache相关模块。
Apache的钩子函数挺多的,在此我使用的是RUN_FIRST ap_hook_handler(),RUN_FIRST是钩子类型,还有2个类型RUN_ALL,VOID。
VOID类型在对挂钩数组进行遍历调用的时候,直到遍历调用结束或者发生错误为止。这种类型通常称之为VOID,是由于其没有任何返回值。
RUN_ALL类型在对挂钩数组进行遍历调用的时候,即使调用的请求被“DECLINE”,调用也将继续;只有调用请求发生错误才返回该错误值,同时退出遍历。
RUN_FIRST类型在遍历调用过程中一旦找到合适的函数,即结果不为decline的时候,函数即返回,不再继续遍历调用,即使后面仍然有合法的可调用函数。
很明显,我需要的类型是RUN_FIRST,当判断未登陆成功时就加载登陆界面,然后直接return 0K,如果判断是已登陆未超时就直接return DECLINE,显示正常网页。
通过了解,看起来是挺简单的 ,但是写好一测就问题了,访问的网页是html时没有问题,但是访问php网页时却出现了异常,这是由于使用setHandler 时,php的处理器在自己写的钩子函数前调用了。
那还是有些知识点没有了解清楚,我们继续。
钩子函数有个挂钩的综合排序参数,之前使用的是APR_HOOK_FIRST,以为是最先调用的了,一时心急没仔细看相关资料就撸上代码了。再通过了解,我们可以知道Apache提供了5个通用的宏: APR_HOOK_REALLY_FIRST、APR_HOOK_FIRST、APR_HOOK_MIDDLE、APR_HOOK_LAST、 APR_HOOK_REALLY_LAST。很明显REALLYN已经告诉我们,它才是正主。于是修改了一下就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值