午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

请求拦截

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 或者请求路径有没有权限

主站蜘蛛池模板: 亚洲综合色成在线播放 | 免费成人午夜 | 91高清在线| 国产在线视频一区 | 99久久久久久久久久 | 国产高清一区二区三区四区 | 久久久免费视频网站 | 欧美日韩精品一区二区 | 91亚洲精品国产 | 97精品无人区乱码在线观看 | 国产精品毛片一区二区三区 | 99热在线免费 | 国产欧美综合视频 | 国产福利在线小视频 | 91视频在线网站 | 免费亚洲网站 | 久久久成人999亚洲区美女 | 成年免费视频 | 天天综合7799精品影视 | 99热在线观看精品 | 一区二区最新免费视频 | 九色网站在线观看 | 91精品婷婷国产综合久久蝌蚪 | 91视频官网| 99热精品免费 | 99久久精品国产91久久久 | a色在线| 国产成人免费在线 | 国产成人啪午夜精品网站男同 | 小舞的玉足把我夹得好爽 | 久久天堂 | 97国产情侣爱久久免费观看 | 国产男人的天堂 | 九九热国产在线 | 51嫩草亚洲精品永久 | 久久久亚洲欧洲日产国码二区 | 91国产免费视频 | 久草福利| 91传媒在线看 | 国产在线视频一区 | 国产天堂精品 |