谷歌二次验证 Google Authenticator

news/2024/11/29 8:34:42/

后台登录要搞令牌,类似于steam令牌、企鹅令牌等等

开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。

实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。

流程如下

大致流程

1、运行如下代码安装拓展包:

composer require "earnp/laravel-google-authenticator:dev-master"
### 安装二维码生成器
composer require simplesoftwareio/simple-qrcode 1.3.*

3.等待下载安装完成,需要在config/app.php中注册服务提供者同时注册下相应门面:

'providers' => [//........Earnp\GoogleAuthenticator\GoogleAuthenticatorServiceprovider::class,SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class,
],'aliases' => [//..........'Google' => Earnp\GoogleAuthenticator\Facades\GoogleAuthenticator::class,'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
],

服务注入以后,如果要使用自定义的配置,还可以发布配置文件到config/views目录:

php artisan vendor:publish

注意绑定视图位置为resources/views/login/google/google.blade.php,然后您可以在config/google.php中修改账号名绑定验证地址

// 创建谷歌验证码
$createSecret = GoogleAuthenticator::CreateSecret();
//$createSecret = [
// "secret" => "NJURUPQN6XNYGSF2"
// "codeurl" => "otpauth://totp/?secret=NJURUPQN6XNYGSF2"
//]
// 生成二维码
$createSecret["qrcode"] = QrCode::enCoding('UTF-8')->size(180)->margin(1)->generate($createSecret["codeurl"]);
核心就是生成二维码之后,主要就是secret串,用手机app扫一扫就添加到验证器上面了

然后 服务端将生成的secret 串与用户进行绑定

下面是展示二维码的代码,用以进行绑定secret 串,如果绑定过就不再展示了

// 判断该用户是否已经存在google秘钥、没有重新生成
        if (empty($user['secret']) && $user['google_status'] === 0) {
            // 获取google秘钥
            $google = GoogleAuthenticator::CreateSecret();
            // 生成二维码
            $google["qrcode"] = QrCode::encoding('UTF-8')->size(180)->margin(1)->generate($google["codeurl"]);
        } else {
            $google['secret'] = $user['secret'];
            $google_url = "otpauth://totp/?secret=" . $user['secret'];
            // 生成二维码
            $google["qrcode"] = QrCode::encoding('UTF-8')->size(180)->margin(1)->generate($google_url);
        }

 

最后用户进行提交code,用绑定的secret 串 来校验

// 判断该用户是否开启google验证
    // 将用户输入的验证码与秘钥进行匹配
    if(1 === $user['google_status']){
        // Google验证码与秘钥进行匹配
        if(!GoogleAuthenticator::CheckCode($user['secret'],$param['secret'])){
           return '匹配成功';
        }
    }

然后可以继续登录后续业务了,如果要取消 只需要 删除user绑定的secret串就可重绑了。


http://www.ppmy.cn/news/241476.html

相关文章

地址池命令 思科理由_思科cisco路由器dhcp动态分配ip地址实现方法

本文实例讲述了思科cisco路由器dhcp动态分配ip地址实现方法。分享给大家供大家参考,具体如下: 一、拓扑图 Router1 F0/0 Switch5 F0/0 Router1 E1/0 VPCS V0/5 Switch5 F0/1 Switch1 F0/0 Switch5 F0/2 Switch2 F0/0 Switch5 F0/3 Switch3 F0/0 Switch5 F0/4 Switch4 F0/0 Sw…

Cisco Packet Tracer思科模拟器中无线网络的基本配置

AP(Access Point)无线接入点,也称无线网桥、无线网关,是一个包含很广的名称,它不仅包含单纯性无线接入点(无线AP),也同样是无线路由器(含无线网关、无线网桥)…

思科策略路由基本配置

PC配置 pc1(config)#int f0/0 pc1(config-if)#ip add 192.168.1.1 255.255.255.0 pc1(config-if)#no shutdown pc1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.254 pc2(config)#int f0/0 pc2(config-if)#ip add 192.168.2.1 255.255.255.0 pc2(config-if)#no shutdown …

无线ap的ntp服务器,怎么配置cisco路由器的NTP

cisco是全世界领先且顶尖的通讯厂商,他出产的路由器功能也是很出色的,那么你知道怎么配置cisco路由器的NTP吗?下面是学习啦小编整理的一些关于怎么配置cisco路由器的NTP的相关资料,供你参考。 配置cisco路由器的NTP的方法: Network Time Protocol(NTP)是用来使计算机时间同…

计算机网络实验(思科模拟器Cisco Packet Tracer)——路由器配置

目录 前言 实验 结语 前言 本次实验将使用思科模拟器Cisco Packet Tracer来完成路由器配置的实验,将通过几个例子来讲述。 实验 例、使用以下设备完成两个校区的相互通讯,共享资源,每个校区利用一台路由器进行连接,且两台路由…

无线路由ntp服务器,CISCO路由器上配置NTP服务器

NTP(Network Time Protocol,网络时间协议)是基于RFC1305的协议,是一个跨越广域网或局域网的复杂的同步时间协议。一般情况下建议配置在路由器上,当然配置在其它设备上都是可以的。接下来我们根据下面的拓扑图来看一下在路由器上配置NTP服务器的方法以及交换机、windows服务器…

无线网ppp服务器失败怎么办,无线路由器ppp失败怎么办

随着互联网时代的崛起,智能设备的普及,SOHO无线路由器的使用也越来越多,那么你知道无线路由器ppp失败怎么办吗?下面是学习啦小编整理的一些关于无线路由器ppp失败的相关资料,供你参考。 无线路由器ppp失败的解决方法: 宽带账号密…

思科路由器系统是Linux,思科推基于Linux新款无线存储路由器

在之前的报道中,我们曾经介绍过思科即将发布的新款路由WRT160NL无线路由产品。目前,思科在新加坡正式宣布了此款基于Linux的Wireless系列无线存储路由器WRT160NL上市。 WRT160NL作为WRT54GL的新一代产品,专为无线爱好者设计,支持第…