ThinkPHP 8 中,为 BaseController 添加一个公共拦截器

我们的需求是,所有数据接口必须验证token后,才予以放行返回数据,虽然可以在每个方法中判断,但第一是不优雅,第二是量一多难免有遗漏的。

ThinkPHP 8 中,为 BaseController 添加一个公共拦截器

我们这么操作的前提是,所有 Controller 都继承自 BaseController ,如果不是,则在对应的父类进行同样的操作即可。

获取当前访问路径

通过 $pathinfo = $this->request->pathinfo(); 可以获取到当前请求的路径,如 ‘user/login’ 。

定义排除列表

包括登录在内的一些接口,我们是不需要进行拦截的,所以要定义一个排除列表。

验证数据

通过下方的代码,先判断是否在排除列表中,如果在,则return返回即可,如果不在则执行拦截操作。

把上面的逻辑换成自己的逻辑即可,也许是cookie,也许是session,总之无论是什么,与之对应即可。

当然,不要尝试在最后 return json([…]); return 并不会阻止程序的下一步运行,就像 in_array 时的 return 一样,其作用只是在这里返回,不会中断。

至于最后的send方法,这个和TP的请求流、方法有关,必须调用->send()才能输出,否则会报错

Object of class think\response\Json could not be converted to string

好了,以上就是简单的设置一个公共拦截器的方法,希望能有所帮助。

原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/13039

Like (0)
蓝洛水深的头像蓝洛水深管理员
Previous 2024年7月26日 上午10:20
Next 2024年8月9日 上午9:47

相关推荐

发表回复

Please Login to Comment
联系QQ
联系QQ
SHARE
TOP