CakePHP 4 MIddleware返回withStatus并中断执行脚本

问题描述

routes.PHP

$routes->applyMiddleware('MyMiddleware');

Application.PHP

public function routes(\Cake\Routing\RouteBuilder $routes): void {
    $options = [
        'httponly' => true,];
    $routes->registerMiddleware('csrf',new CsrfProtectionMiddleware($options));
    
    $routes->registerMiddleware('MyMiddleware',new Middleware\MyMiddleware());
    parent::routes($routes);
}

src / Middleware / MyMiddleware.PHP

public function process(ServerRequestInterface $request,RequestHandlerInterface $handler): ResponseInterface {

        $response = $handler->handle($request);
  
        return $response->withStatus(401,'Fail');
}

它正确响应了httpd 401代码,但是脚本继续工作,并通过了控制器和视图。

我想通过返回除200以外的http代码来停止执行。在cakePHP 4中不起作用。

有人可以告诉我如何返回http 401并破坏脚本。

解决方法

我发现它没有使用方法过程的唯一形式,即使在cakePHP 4中,我也使用了__invoke方法,我可以获得预期的结果

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...