easyswoole - 基于swoole扩展实现的一款高性能php框架

請求攔截

EasySwoole 的控制器并沒有提供類似中間件的說法,而是提供了控制器中的 onRequest 事件進行驗證。

例如,我們需要對 /api/user/* 下的路徑進行 cookie 驗證。那么有以下兩種方案:

全局 Request 及 Response 事件

全局 Initialize 事件 中注冊.

public static function initialize()
{
    date_default_timezone_set('Asia/Shanghai');

    // onRequest v3.4.x+
    \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response) {
        $cookie = $request->getCookieParams('user_cookie');
        // 對 cookie 進行判斷,比如在數據庫或者是 redis 緩存中,存在該 cookie 信息,說明用戶登錄成功
        $isLogin = true;
        if ($isLogin) {
            // 返回 true 表示繼續往下執行控制器 action
            return true;
        } else {
            // 這一步可以給前端響應數據,告知前端未登錄
            $data = Array(
                "code" => 200,
                "result" => null,
                "msg" => '請先登錄'
            );
            $response->withHeader('Content-Type', 'application/json;charset=utf-8');
            $response->withStatus(200);
            $response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
            // 返回 false 表示不繼續往下執行控制器 action
            return false;
        }
    });

    // afterRequest v3.4.x+
    \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_AFTER_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response) {

    });
}

EasySwoole 3.4.x 版本之前:可在項目根目錄的 EasySwooleEvent.php 中看到 onRequestafterRequest 方法。

定義 Base 控制器

<?php

namespace App\HttpController\Api\User;

use EasySwoole\Http\AbstractInterface\Controller;

abstract class Base extends Controller
{
    protected function onRequest(?string $action): ?bool
    {
        $cookie = $this->request()->getCookieParams('user_cookie');
        // 對 cookie 進行判斷,比如在數據庫或者是 redis 緩存中,存在該 cookie 信息,說明用戶登錄成功
        $isLogin = true;
        if ($isLogin) {
            // 返回 true 表示繼續往下執行控制器 action
            return true;
        } else {
            // 這一步可以給前端響應數據,告知前端未登錄
            $this->writeJson(401, null, '請先登錄');
            // 返回 false 表示不繼續往下執行控制器 action
            return false;
        }
    }
}

后續,只要 /api/user/* 路徑下的控制器,都繼承自 Base 控制器,都可以自動實現對 cookie 攔截了

行為權限校驗也是如此,可以判斷某個用戶是否對該控制器的 action 或者請求路徑有沒有權限

主站蜘蛛池模板: 上海巧质家具有限公司 | 普利卡管|普利卡管接头|普利卡接头-上海闵彬管业有限公司 | 河南郑州纯净水设备_厂家_价格_河南江宇环保科技有限公司水处理设备工厂 | 振动筛_直线振动筛_超声波振动筛-新乡市大汉振动机械有限公司 | 啤酒厂家_啤酒代工厂_原浆啤酒厂家 - 山东十谷啤酒有限公司 | 压滤机入料泵_渣浆泵_耐磨污水泵_保定森力克水泵制造有限公司 | 全屋定制超市_全屋定制加盟_星空梵高全屋定制招商 | 宁波雷豹机电科技有限公司|雷豹冷风机|雷豹工业大风扇|MFC18000|MFC16000|MFC6000|EF3622|EF4222|EF4822|移动工业蒸发式冷风机空气冷却器|大型工业空调扇|雷豹移动式工业大风扇|雷豹大风扇|生产厂家|公司官网 | 江西蔬菜配送,南昌蔬菜配送,南昌食堂承包,江西饭堂承包-江西菜篮子农产品发展有限公司 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 内蒙古慧申设计顾问有限公司-官网 | 少妇厨房与子伦_污污内射久久一区二区欧美日韩_四房婷婷 | 质保_天津光栅尺_机床光栅尺数显表-天津方韦仪器有限公司 | 样品前处理仪器_光谱仪器_色谱/分析仪器_测量/计量仪器_青岛聚创世纪环保科技有限公司 | 日本进口东丽碳纤维材料-上海久扶新材料科技有限公司 | 吉安仁济医院「官网」吉安男科医院-吉安仁济男科医院靠谱吗-男性专科医院 | 双螺杆挤压膨化设备_挤压熟化设备_烘干设备_油炸设备及喷涂调味设备-山东铭本机械科技公司 | 全自动烫金机-全自动移印机-全自动丝印机-全自动平面机-东莞联昌实业供应各种丝印机和移印机 | 克莱门特中央空调维修| 监控工程,安防监控公司,北京监控安装,北京安装监控,安装摄像头,北京监控维保,监控施工,北京监控维修,监控弱电工程,监控器安装,监控维护保养,监控工程设计,北京监控设备维修,监控报警安装,北京北方合力科技有限公司 | 扭力扳手_扭力扳手检定仪_数显扭力扳手_扭力测试仪_测力计_推拉力计_拉力测试仪_测试台架-上海实干实业有限公司 | 旋转补偿器-专注套筒三维球形补偿器定制生产厂家-伸缩接头价格_巩义市新华丰管道设备有限公司 | 泥浆振动筛|卧式泥浆搅拌器|泥浆离心机|泥浆处理固控设备_沧州宏宇石油机械有限公司 | 全国重点实验室--人民网| 钕铁硼-强力磁铁-永磁铁「聚盛磁铁」10年定制加工生产厂家 | 扬州华工电气有限公司|环氧树脂管|金刚石绝缘板|U型绝缘槽|电解槽绝缘材料 | 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 | 造雪机|人工造雪机|造雪机价格|造雪机厂家-河南晋安机械科技有限公司 | 汽车智能防撞系统_智能刹车_77G毫米波雷达_麒云科技疲劳驾驶预警 | 液压油缸_液压系统_液压泵站生产厂家-浙江汉达机械专注液压行业21年 | 医药招商 千虹医药网-专业的医药招商-医药代理-药品招商-药品代理信息发布平台 | 中国工业网_网络工业品牌 资讯创造价值 | 湖南众一离心机股份有限公司_活塞推料离心机_沉降离心机_卧式刮刀离心机 | 河北伟业波纹管-百顺牌波纹补偿器(波纹管,膨胀节,伸缩节)、非金属补偿器 | 制沙机,反击式破碎机,重锤破碎机,泥石分离机,圆锥破碎机厂家-昆明德鑫机械 | 深圳心理咨询-专业心理咨询服务平台「专家免费在线」-深圳从心开始心理O2O | 山东飞斯特汽车科技有限公司| 上海前 傲信息技术有限公司-企业信息化建设及品牌推广服务商 | 声测管厂家_注浆管现货_桩基声测管_河北沧州新迈实业有限公司 | 水晶粉丝机_粉丝机_粉皮机-开封市晟丰机械设备有限公司 | 环链电动葫芦-群吊电动葫芦-链条电动葫芦-环链葫芦-河北大力起重官方网站 |