2016-11-21 5 views
0

Я успешно установил промежуточное программное обеспечение Laravel, чтобы проверить, зарегистрирован ли пользователь в первый раз (с помощью простой проверки нулевого значения в $user->last_logged_in_date field). Я хочу, чтобы эти новые пользователи были перенаправлены на просмотр /password/reset, чтобы они могли заполнить свой адрес электронной почты и получить ссылку, отправленную им.Laravel - Слишком много переадресаций

Я получаю сообщение о

Слишком много переадресаций произошло при попытке открыть «LOCALHOST: 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-> middleware (['auth', 'new_user']); 'это вызовет бесконечное перенаправление – Moak

+0

Спасибо за ответ. Контроллер сброса пароля имеет только $ this-> middleware ('guest'); Любые другие идеи, в которых я могу ошибаться? – Ows

+0

Что относительно контроллера, который показывает домашнюю страницу? есть ли какие-нибудь средние? – Maraboc

ответ

0

Так что, если я правильно понял контроллер сброса пароля использует guest промежуточное программное обеспечение, которое ожидает пользователь не будет подписан в. Вы создали new_user промежуточное программное обеспечение, которое пинает в том, когда пользователь вошел в систему, но новый. Поэтому новый пользователь, который зарегистрирован, отправляется контроллеру сброса, который требует гостя, которого вы явно не потому, что вы вошли в систему, поэтому он отправляет вас обратно на ваш домашний контроллер, который проверяет и видит, что вы новый пользователь и поэтому он отправляет вас на сброс пароля .... вы получаете изображение :)

+0

Doh! Как я не видел этого? Большое вам спасибо за вашу помощь! – Ows

+0

Если это ответили, пожалуйста, отметьте ответ как принятый. – Moak

Смежные вопросы