Laravel引入谷歌验证器

一、首先安装composer包 命令如下

composer require "earnp/laravel-google-authenticator:dev-master"

二、因为要生成二维码,所以需要引入二维码生成包,如果没有引入的可以执行如下命令(如果不需要生成二维码可以不用引入)

composer require simplesoftwareio/simple-qrcode 1.3.*

三、生成验证码

手机下载Google验证器并安装

// 获取google秘钥
$google = GoogleAuthenticator::CreateSecret();

里面包括secretcodeurl

codeurl用于生成二维码,用验证器扫描二维码后会自动添加一个账号名和secret

QrCode::encoding('UTF-8')->size(200)->margin(1)->generate($google["codeurl"]);

当然你也可以选择手动添加,这样就可以不用二维码了,手动添加需要填入账号名和密钥

账号名可以随便填,密钥要固定,后面要用它来验证

四、验证

用生成的密钥对应的验证码验证

if (!GoogleAuthenticator::CheckCode(config('google.secret'),$request->google_auth)){
    return '认证失败';
}

我是将secret暂时存在配置文件中,你也可以将它存在数据库中(注意secret和验证码要对应,否则永远认证不成功)

五、问题

我刚开始遇到的问题是用密钥手动生成的验证码能用,二维码也能生成,但生成的二维码扫一直报“无法解读QR码”

后面查看底层代码才发现缺少google配置文件,如果在config文件夹下没有google.php 的配置文件,可以手动添加配置,google.php 的文件内容如下

 "Face Mall",
		"authenticatorurl" => "",
        "secret"=>env('google_secret', 'TEST')
    ];

如果扫码出现“无法解读QR码”很可能是没取到authenticatorname配置的值

你可能感兴趣的:(Laravel,PHP,laravel,php)