在Laravel 4上实施OTP Google身份验证器

时间:2014-03-07 03:22:56

标签: laravel otp google-authenticator

我正在使用https://github.com/ChristianRiesen/otp在Laravel 4.1.23网站上集成双因素身份验证:秘密生成正常,QR码图像也是如此,Google身份验证器能够扫描图像。< / p>

但是,我在iPhone身份验证器应用程序内部生成的代码无法验证。我已经按照README.md中的示例进行了操作。

在我的控制器中,我有以下代码:

$secret = GoogleAuthenticator::generateRandom();
$url = GoogleAuthenticator::getQrCodeUrl('totp', 'MySite:'.Auth::user()->email, $secret);
// Save the secret with the user's data
if (!Auth::user()->secret) {
   Auth::user()->secret = $secret;
   Auth::user()->save();
}
return View::make('2fa')->with('secret', $secret)->with('url', $url);

然后在我看来(2fa.blade.php),我的代码如下:

<strong>Secret Key:</strong> {{ $secret }}
<strong>QR Code</strong> <br/>
<img src="{{ $url }}" />

<form action="/confirm_key" method="post">
    <label for="key">Enter the generated key:</label>
    <input type="text" name="key" id="key"/>
    <input type="submit" id="submit" value="Confirm Key"/>    
</form>

这一切似乎都在起作用。表单发布到以下控制器功能:

public function postTwoFactorAuthentication() {
    // Now how to check
    $otp = new Otp();

    if ($otp->checkTotp(Base32::decode(Auth::user()->secret), Input::get('key'))) {
        return 'Verified!';
    }
    // Wrong key 
    else {
        return 'Invalid key!'
    }
}

这是来自repo的以下用法示例,但密钥(令牌)永远不会验证。我在这里错过了什么吗? Laravel搞砸了什么吗?

感谢任何帮助。

0 个答案:

没有答案