2017-06-11 20 views

回答

0

您的中間件正在所有路由之前運行。所以,你可能有這樣的路線:

$routes->match('/login', function() use ($app) { 
    // Login etc. 
}); 

或者你正在使用,GET的POST或其他。中間件將始終在路由運行之前運行。所以是的,你的中間件在登錄之前也會被應用,因爲它適用於每一個路由。

您可以通過類似這樣您登錄路由後運行的中間件解決這個問題:在這個

$routes->match('/login', function() use ($app) { 
    // Login etc. 
}) 
->after($after); 

更多細節可以發現here

您也可以更改您的中間件,以便它首先檢查用戶是否已經登錄。如果是這樣,運行身份驗證,如果不是......什麼也不做。

$app->before(function($request, $app) { 
    if user is logged in { 
     Auth::authenticate($request, $app); 
    } 
}); 

我希望這可以幫助你。不要忘記標記爲已完成,否則,請留下評論或編輯您的問題,我會幫助您!

+0

你最後的例子是我總是這樣做。 – Maerlyn

+0

你的最後一個例子意味着它不會進行身份驗證,如果它沒有登錄,我想在這兩種情況下進行身份驗證,但問題是當登錄路由開始時,它需要身份驗證頭和令牌也是錯誤的我需要一種方法排除登錄路線,我不想重複自己,併爲每條路線手動執行,我的問題是登錄路線 –

相關問題