使用纤薄PHP框架的部分应用应用中间件


Partial Application of App Middleware with Slim PHP Framework

我正在使用Slim编写一个REST API,我希望我的API的某些部分需要登录,而某些部分是公开可用的。对于身份验证,我使用的是Slim Extras的StrongAuth中间件。

不幸的是,如果未提供身份验证,StrongAuth 会终止请求并且是一个应用程序中间件(似乎是全部或全无),因此我一直在构建完全由 StrongAuth 保护的 API,允许通过虚拟登录访问公共资源。

但是,这并不理想;我只想拥有不安全的资源。我尝试在同一文件中运行两个应用程序,但其中一个总是抛出 404 错误,这显然是不可接受的。

有谁知道一种方法可以将应用程序级中间件仅应用于 Slim 中的某些路由,或者如何在同一文件中运行多个 Slim 应用程序而不会出现问题?

Slim 中间件都实现了公共方法 call(),您可以尝试以这种方式将其添加到所需的路由中。为此,您需要获取中间件($auth)的实例,而不将其用作中间件。

$app->get('/yourSecuredRoute', array($auth,'call'), function() use($app){
        $app->render('index.html');
});

不确定它是否有效,即使有效,也很棘手,应该有更好的方法,例如编写自己的路由级中间件。