Laravel为什么在中间件中跳过我的命令



我创建了一个中间件来检查使用Google2fa_enabled = 1的用户是否有Google2fa_secret,如果他们不使用,则需要创建一个。

在中间软件中,我用if-Statement定义了句柄功能,并且在TRUE时,它将用户重定向到/2FA/CREATE。它不起作用,因此我像if(true)一样进行了IF-Statement,但是用户没有被重定向。当我用return redirect('/2fa/create')替换return语句时,它确实重定向,因此使用中间件(也用Laravel Debugbar确认(

中间件本身:

<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateSupportFacadesAuth;
class checkTwoFactor
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $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 == ""(

糟糕,我已经找到了错误。

我需要在该案件中工作的返回语句,因此redirect()必须是return redirect()

最新更新