Logo

php实现authenticator功能

photo

2024年03月27日

最近在实现一个MFC【多因子验证】来实现二次验证,分享以下整个过程

下载手机app

  • Authenticator(可以微软/谷歌)

php代码实现输出

//参考文档

https://github.com/Spomky-Labs/otphp/blob/HEAD/doc/index.md

<?php
namespace app\controller\user;

use OTPHP\TOTP;
use app\BaseController;

class Authenticator extends BaseController
{
   public function generateQrcode1()
    {
        $otp = TOTP::create();
        $scret = $otp->getSecret();
        echo "The OTP secret is: {$otp->getSecret()}\n";

        //生成6位数码
        echo "The current OTP is: {$otp->now()}\n";
        echo '<pre/>';
         //生成可扫描二维码
        $otp->setLabel('OA令牌验证功能');
        $grCodeUri = $otp->getQrCodeUri(
            'https://api.qrserver.com/v1/create-qr-code/?data=[DATA]&size=200x200&ecc=M',
            '[DATA]'
        );
        echo "<img src='{$grCodeUri}'>";
        echo '<pre/>';
        //解密
        $otp = TOTP::create($scret); // create TOTP object from the secret.

        var_dump($otp->verify($otp->now())); // Returns true if the input is verified, otherwise false.
    }

}
* 注意如果要固定scret则要存起来,否则每次刷新后都是一个全新的值
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

热门文章

修复群晖Synology Drive client右键菜单缺失问题 本教程主要解决windows10右键菜单中没有SynologyDrive菜单的问题,整体思路是找到...修复群晖SynologyDriveclient右键菜单缺失问题 作者:Pastore Antonio
1822 浏览量
docker如何查看一个镜像内部的目录结构及其内部都有哪些文件 前言:有时候我们会在docker上下载一个镜像,或者是上传一个镜像到docker上,甚至有时候就是在...docker如何查看一个镜像内部的目录结构及其内部都有哪些文件 作者:Pastore Antonio
1805 浏览量
Adobe Acrobat Pro 激活 这里记录了一些AdobeAcrobat的激活教程和组件。浏览量:1,687 作者:Pastore Antonio
1533 浏览量
configure: error: Package requirements (oniguruma) were not met configure:error:Packagerequirements(oniguruma)...configure:error:Packagerequirements(oniguruma)werenotmet 作者:Pastore Antonio
1533 浏览量
追寻日出,找回自己 为什么我要去追寻日出?其实我是一个很懒的人,每次都起不来,直到有一次我在租房中睡到了大天亮,阳光照...追寻日出,找回自己 作者:Pastore Antonio
1510 浏览量