2013-10-16 38 views
1

我正在用Slim編寫一個REST API,我希望我的API的某些部分需要登錄,有些部分需要公開。對於身份驗證,我使用Slim Extras的StrongAuth中間件。Slim PHP框架部分應用中間件

不幸的是,StrongAuth在沒有提供身份驗證的情況下終止了請求,並且它是一個應用程序中間件(似乎全部或全部都沒有),所以我一直在構建完全受StrongAuth保護的API,允許訪問公共資源通過虛擬登錄。

但是,這並不理想;我想只是有不安全的資源。我試着在同一個文件中運行兩個應用程序,但其中一個總是拋出404錯誤,這顯然是不可接受的。

有誰知道一種方法來將應用級中間件應用於Slim中的僅一些路由,或者如何在同一個文件中運行多個Slim應用程序而沒有問題?

回答

2

Slim中間件都實現了公共方法調用(),你可以嘗試用這種方法將它添加到你想要的路線上。爲此,您需要獲取中間件的實例($ auth),而不將其用作中間件。

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

不知道它的工作原理,即使是這樣,它的棘手並且應該有一個更好的辦法,如寫自己的路線級中間件。

+0

謝謝!我不是一個PHP的傢伙,這不是在文檔中。 –

+0

不,如果strongAuth y應用程序級別,並且您將它用作路由中間件,它將在該路線中運行兩次......我認爲... @john是否按預期工作? – KnF

+0

如果我沒有記錯,您不應該將其添加爲應用程序級別的中間件,而只是針對特定路線。 – webaba