日韩在线观看-日韩在线成人-日韩在线不卡视频-日韩在线不卡视频-国产精品99-国产精品99

請求攔截

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 或者請求路徑有沒有權限

主站蜘蛛池模板: 打开双腿扒开打屁股羞辱惩罚视频| 阿星| 守卫者2| 3d成人国产同人动漫焰灵姬| mind and hand| 在线播放你懂| 阎良之窗| 周秀娜与罗仲谦新婚吻戏合集| 乱世危情电视剧演员表| 吻胸亲乳激情大尺度| 故乡,别来无恙演员表| 电影交换| 45分钟见奶薄纱透明时装秀| 《窃她》短剧全集| 吻胸吃胸激情舌吻| 少女模特电影| intel集成显卡天梯图| 色在线观看| 奇门遁甲电影免费观看完整版| 邓稼先教学设计一等奖优秀教案| 男人天堂视频| 时诗个人资料| 永井大| 七剑下天山演员表| 10种齿痕图解| 电影《睡在我上铺的兄弟》简介| 战狼15电影在线观看| 电影白日梦2| 抖音浏览器| 南来北往电视剧剧情| 菊次郎的夏天钢琴谱简谱| 女生被草视频| xiee| 老阿姨电影电视剧免费| 韩国电影两个小姨子| 中医把脉| 金鸳鸯| 日本大电影| 高登眼镜| 伦理<禁忌1| 金太狼的幸福生活电影演员表介绍|