首页 > 解决方案 > 双重认证连接无法重定向

问题描述

我正在尝试在 laravel 下设置一个双重身份验证页面,为此我添加了一个 checkTotp 方法来验证用户是否已激活双重身份验证并将该用户重定向到相关页面。

问题是我没有被重定向并且代码继续执行。

public function login(Request $request)
{
    $this->validateLogin($request);
    ...
    $this->checkTotp($request);
    dd('after');
    ...
}

protected function checkTotp(Request $request) 
{
    $user = User::where('email', $request->get('email'))->first();
    if (!is_null($user->totp_key)) {
        $request->session()->put('user_id', $user->id);
        return redirect('login/totp');
    }
}

发生的情况是我输入了 checkTotp 方法,但重定向不起作用。我的输出是 dd('after')。我不明白为什么我没有被重定向。有人能帮我吗?

昆汀

标签: phplaravelredirectlogintotp

解决方案


checkTotp函数返回一个重定向,但您希望该login函数返回该重定向,以便将其传递给浏览器。您可能希望将重定向移动到主函数并让 checkTOTP 只返回 true/false。

public function login(Request $request)
{
    $this->validateLogin($request);
    ...
    if ($this->checkTotp($request)) return redirect('login/totp');
    dd('after');
    ...
}

protected function checkTotp(Request $request) 
{
    $user = User::where('email', $request->get('email'))->first();
    if (!is_null($user->totp_key)) {
        $request->session()->put('user_id', $user->id);
        return true;
    }
    return false;
}

推荐阅读