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 的文件内容如下

<?php
    return [
    	// 中文需要UrlEncode转为utf8编码
    	"authenticatorname" => "Face Mall",
		"authenticatorurl" => "",
        "secret"=>env('google_secret', 'TEST')
    ];

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值