Почему Laravel пропускает мое утверждение if в Middleware? - PullRequest
0 голосов
/ 18 мая 2019

Я создал Middleware, чтобы проверить, есть ли у пользователя с google2fa_enabled = 1 google2fa_secret, а когда нет, нужно создать его.

В промежуточном программном обеспечении я определил функцию handle с помощью оператора if, и когда он равен true, он перенаправляет пользователя в / 2fa / create. Это не сработало, поэтому я сделал оператор if наподобие if(true), но пользователь не перенаправляется. Когда я заменяю оператор return после этого на return redirect('/2fa/create'), он выполняет перенаправление, поэтому используется промежуточное программное обеспечение (также подтверждается с помощью панели отладки Laravel)

Само промежуточное ПО:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class checkTwoFactor
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(true){
            redirect('/2fa/create');
        }
        return $next($request);
    }
}

И маршруты:

Route::get('/', function () {
    return view('layouts/master');
})->middleware(['auth', 'check2fa']);

Я ожидаю, что пользователь будет перенаправлен в / 2fa / create всегда (и позже, если пользователь вошел в систему, имеет google2fa_enabled = 1 & google2fa_secret == "")

1 Ответ

1 голос
/ 18 мая 2019

Упс, я уже нашел ошибку.

Мне нужно оператор return в этом операторе if, чтобы redirect() должно было быть return redirect()

...