利用Slim PHP框架部分应用App中间件

时间:2013-10-16 01:01:34

标签: php slim

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

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

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

有没有人知道如何将应用级中间件应用于Slim中的某些路由,或者如何在同一个文件中运行多个Slim应用而没有问题?

1 个答案:

答案 0 :(得分:2)

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

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

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