2016-11-21 65 views
0

我已成功設置Laravel中間件,以檢查用戶是否第一次登錄(通過簡單檢查$user->last_logged_in_date field中的空值)。我想要的是將這些新用戶重定向到/password/reset視圖,以便他們可以填寫他們的電子郵件地址並獲得發送給他們的鏈接。Laravel - 發生太多重定向

我收到的

重定向過多的消息時,出現了打開「本地主機:8000」

如果您打開被重定向到打開另一個頁面 頁面可能發生這種情況然後重定向到打開原始頁面。

我的所有控制器都$this->middleware(['auth', 'new_user']);引用,我的中間件如下所示:

<?php 

namespace App\Http\Middleware; 

use Closure; 

use App\Http\Controllers\Auth; 


class CheckIfNewUser 
{ 
    public function handle($request, Closure $next) 
    { 
     $user = $request->user(); 

     if (! is_null($user->last_logged_in_date)) { 
      return $next($request); 
     } 

     return redirect('password/reset'); 
    } 
} 

任何指導意見?

+1

如果密碼重置控制器也有'$ this->中間件(['auth','new_user']); '這會導致無限重定向 – Moak

+0

感謝您的回覆。 密碼重置控制器只有$ this-> middleware('guest'); 任何其他想法,我可能會出錯? – Ows

+0

顯示主頁的控制器如何?有沒有中間件? – Maraboc

回答

0

所以,如果我理解正確的密碼重置控制器使用 guest中間件其希望用戶不簽字。 您已經創建了一個new_user中間件其踢當用戶,但新的記錄中。 因此,登錄的新用戶被髮送到需要訪客的重置控制器,您顯然不是因爲您已登錄,所以它會將您發送回您的家庭控制器,該家庭控制器會檢查並看到您是新用戶,所以它發送給你的密碼重置....你得到的圖片:)

+0

Doh!我怎麼看不到?非常感謝你的幫助! – Ows

+0

如果回答了它,請將答案標記爲已接受。 – Moak