«Попытка получить свойства« заголовки »необъекта» Middleware \ VerifyCsrfToken.php: 180 - PullRequest
1 голос
/ 18 апреля 2019

Я написал свое пользовательское промежуточное ПО, но при его выполнении появляется ошибка. Middleware:

namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
use App\Employee;

class CheckConfirm
{
public function handle($request, Closure $next)
{
    if(Auth::check())          
    {
        $id = Auth::id();        
        $empl = Employee::where('user_id','=', $id)->get();
        if($empl->isEmpty())
        {
            return route('confirm');                    
        }
        else
        {                
            dump($empl);
            return $next($request);
        }
    }
    else
    {
        return route('login');
    }
}
}

Когда я пытаюсь что-то вроде этого:

if($empl===null)
   {
      return route('confirm');                    
   }

условие просто не работает. В этом случае запросы к базе данных выполняются успешно. Вот страница ошибки с дампом

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Ваше промежуточное ПО должно возвращать объект Response или $next($request). Как написано, когда вы не вошли в систему или когда $empl пусто, ваше промежуточное ПО просто возвращает строку, а не перенаправление.

Обновите ваши возвращения на:

return redirect()->route('confirm');

и

return redirect()->route('login');

соответственно.

0 голосов
/ 18 апреля 2019

Замените эту строку:

$empl = Employee::where('user_id','=', $id)->get();
        if($empl->isEmpty()){ ... }

На это:

$empl = Employee::where('user_id', $id)->first();
        if($empl){ ... }

Затем dd () для каждой строки, посмотрите, где она терпит неудачу.Возможно, отсутствует токен csrf или пользователь не вошел в систему ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...