Laravel 8 Предоставленный код двухфакторной аутентификации недействителен

Я использовал laravel fortify без Jetstream. 2FA всегда возвращает false.

Коды восстановления работают, но 6-значный код всегда возвращает false

class TwoFactorAuthenticatedSessionController extends Controller
{
  
    ... 
    
    /**
     * Attempt to authenticate a new session using the two factor authentication code.
     *
     * @param  \Laravel\Fortify\Http\Requests\TwoFactorLoginRequest  $request
     * @return mixed
     */
    public function store(TwoFactorLoginRequest $request)
    {
        $user = $request->challengedUser();

        if ($code = $request->validRecoveryCode()) {
            $user->replaceRecoveryCode($code);
        } elseif (! $request->hasValidCode()) {  // This always return false
            return app(FailedTwoFactorLoginResponse::class);
        }

        $this->guard->login($user, $request->remember());

        return app(TwoFactorLoginResponse::class);
    }
  
}

$ request- ›hasValidCode ()

public function hasValidCode()
    {
        return $this->code && app(TwoFactorAuthenticationProvider::class)->verify(
            decrypt($this->challengedUser()->two_factor_secret), $this->code
        );
    }

Я не менял бэкэнд fortify. Я только преобразовал интерфейс с помощью bootstrap.


person Akhzar Javed    schedule 16.11.2020    source источник


Ответы (1)


Я наткнулся на этот пост, когда искал ответ на тот же вопрос. В конце концов я обнаружил, что время моего сервера истекло примерно на 2 минуты. Я включил NTP для синхронизации времени, и 2FA в Laravel начала работать без проблем.

person Gavin    schedule 04.05.2021
comment
я проверю это со своей стороны - person Akhzar Javed; 05.05.2021