开发前的准备

  1. 安装Laravel
  2. 安装二维码生成器QrCode,没有安装也可以,接下来会安装

安装拓展

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

 composer require "earnp/laravel-google-authenticator:dev-master"
### 安装二维码生成器
### 若composer require不到文件自行github 下载源码放入vendor相应的目录下
composer require simplesoftwareio/simple-qrcode 1.3.*

2、等待下载安装完成,需要在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
],

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

 ###这一步可以不执行:视情况而定
php artisan vendor:publish

使用一(项目中使用)

使用方法非常简单,主要为生成验证码和校验验证码

1、生产验证码

生产验证码使用CreateSecret即可,你需要将其内容生成二维码供手机APP扫描,具体内容在google.blade.php中已经配置成功

 public function addUser(Request $request)
{
if($request->isMethod('get')){
// 创建谷歌验证码
$createSecret = GoogleAuthenticator::CreateSecret();
//$createSecret = [
// "secret" => "NJURUPQN6XNYGSF2"
// "codeurl" => "otpauth://totp/?secret=NJURUPQN6XNYGSF2"
//]
// 生成二维码
$createSecret["qrcode"] = QrCode::encoding('UTF-8')->size(180)->margin(1)->generate($createSecret["codeurl"]);
//发送页面
return view('auth.auth.add',['google'=>$createSecret]);
}
//获取数据
$user_from = $request->only(['role_id','username','pass','pass_confirmation','real_name','mobile','secret']); //保存入库 secret会存入数据库
$auth_user = new AuthUserService();
$res = $auth_user->addUser($user_from);
return redirect('admin/auth/index');
}

2、校验验证码

 //登录验证
public function login(array $param)
{
$model = new AuthUserModel();
//Google 验证
if(!GoogleAuthenticator::CheckCode($userInfo['secret'],$param['secret'])){
return ['status'=>false,'msg'=>['secret'=>['验证码错误,请重新输入']]];
} $update = $model->editLoginInfo($userInfo['id'], $update);
if(!$update){
return ['status'=>false,'msg'=>['username'=>'更新登录信息失败']];
}else{
return ['status'=>true,'data'=>$userInfo];
}
}

使用二(Demo)

1、校验验证码

校验验证码一般用于绑定,登录认证中,使用CheckCode方法即可,需要传入secrectonecode即验证码即可进行校验,第一个为secrect;返回truefalse

if(Google::CheckCode($google,$request->onecode)) {
// 绑定场景:绑定成功,向数据库插入google参数,跳转到登录界面让用户登录
// 登录认证场景:认证成功,执行认证操作
dd("认证成功");
}else {
// 绑定场景:认证失败,返回重新绑定,刷新新的二维码
return back()->with('msg','请正确输入手机上google验证码 !')->withInput();
// 登录认证场景:认证失败,返回重新绑定,刷新新的二维码
return back()->with('msg','验证码错误,请输入正确的验证码 !')->withInput();
}

这里有一个具体的实际事例:

use Google;

if ($request->isMethod('post')) {
if (empty($request->onecode) && strlen($request->onecode) != 6) return back()->with('msg','请正确输入手机上google验证码 !')->withInput();
// google密钥,绑定的时候为生成的密钥;如果是绑定后登录,从数据库取以前绑定的密钥
$google = $request->google;
// 验证验证码和密钥是否相同
if(Google::CheckCode($google,$request->onecode)) {
// 绑定场景:绑定成功,向数据库插入google参数,跳转到登录界面让用户登录
// 登录认证场景:认证成功,执行认证操作
dd("认证成功");
}else {
// 绑定场景:认证失败,返回重新绑定,刷新新的二维码
return back()->with('msg','请正确输入手机上google验证码 !')->withInput();
// 登录认证场景:认证失败,返回重新绑定,刷新新的二维码
return back()->with('msg','验证码错误,请输入正确的验证码 !')->withInput();
}
}else {
// 创建谷歌验证码
$createSecret = Google::CreateSecret();
// 您自定义的参数,随表单返回
$parameter = [["name"=>"usename","value"=>"123"]];
return view('login.google.google', ['createSecret' => $createSecret,"parameter" => $parameter]);

Laravel-google-authenticator--Google验证码的更多相关文章

  1. SSH + Google Authenticator 安全加固

    1. SSH连接 Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境.SSH通过在网络中创建安全隧道来实现SSH客户端与服务器 ...

  2. Linux下使用Google Authenticator配置SSH登录动态验证码

    1.一般ssh登录服务器,只需要输入账号和密码.2.本教程的目的:在账号和密码之间再增加一个验证码,只有输入正确的验证码之后,再输入密码才能登录.这样就增强了ssh登录的安全性.3.账号.验证码.密码 ...

  3. Google Authenticator

    Google Authenticator 现在越来越多的网站采用两步验证,实现方式可能有所区别,一般来说是 1+? (1 即 普通的用户名和密码, ?可能是实物如U盾.手机短信验证码或其他).?的重点 ...

  4. 为效率而生:开源Mac版Google Authenticator认证客户端GoldenPassport

    最近运维同学为了提高安全性,用Google Authenticator对服务器加了双重认证,此后登录服务器需要先输入动态密码,在输入服务器密码.Google Authenticator相当于软toke ...

  5. java实现谷歌二步验证 (Google Authenticator)

    准备: 一个谷歌二步验证APP,  我用的是ios 身份宝 资料: 1.Google Authenticator 原理及Java实现   //主要参考 https://blog.csdn.net/li ...

  6. 【Linux】使用Google Authenticator 实现ssh登录双因素认证

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

  7. Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

  8. Google Authenticator(谷歌身份验证器)

    <!DOCTYPE html>Google Authenticator(谷歌身份验证器) ] Google Authenticator(谷歌身份验证器) Google Authentica ...

  9. Google Authenticator(谷歌身份验证器)C#版

    摘要:Google Authenticator(谷歌身份验证器),是谷歌公司推出的一款动态令牌工具,解决账户使用时遭到的一些不安全的操作进行的"二次验证",认证器基于RFC文档中的 ...

  10. ssh密码登录+ Google Authenticator 实现双向认证

    通常我们直接通过ssh输入密码连接服务器,但这样很容易出现暴力破解情况,所以我们可以结合google的动态认证+ssh密码,这样能够大大的提升登陆的安全. 简单来说,就是当用户通过ssh登陆系统时,先 ...

随机推荐

  1. PHP加密解密函数(带有效期,过了有效期也解不了)

    转的,原来应该是discuz中弄的 <?php //加解密函数 //此函数的厉害之处在于可以在指定时间内加密还原字符串,超时无法还原. //这样我们就可以拿此函数来做很多用途了,比如:单点登录的 ...

  2. mysql一个非常实用解决sql查询优化的函数explain

    前言: 项目中有个表有几万条数据,然后还要关联其他表,查询条件也有点多,再没有其他查询条件下,默认时间查询条件如果是查一年的数据的话,查询时间那是慢得可怕. 找总监去优化sql,看他用了一个sql函数 ...

  3. 响应式用法rem,需要加入这段JS

    <script type="text/javascript"> $(function(){ function size() { winWidth = $(window) ...

  4. PHP知识点记录

    笔记源自---PHP必须知道的300个问题 一.提高编程效率 1.echo中字符串用单引号包含起来会比用双引号快. 2.$row['id']的速度要比$row[id]快很多. 3.echo比print ...

  5. spring cloud配置注册中心显示服务的ip地址和端口

    1.在springcloud中服务的 Instance ID 默认值是: ${spring.cloud.client.hostname}:${spring.application.name}:${sp ...

  6. [ffmpeg] 滤波格式协商

    ffmpeg的中滤波器是以帧为原料来进行滤波的,那么自然地就会对帧的格式有所要求,可以说如果滤波器不知道帧的格式,就无法对帧进行处理.在进行视频滤波时,滤波格式指的是视频的像素格式:在进行音频滤波时, ...

  7. P1462 通往奥格瑞玛的道路 (二分+最短路)

    题目 P1462 通往奥格瑞玛的道路 给定\(n\)个点\(m\)条边,每个点上都有点权\(f[i]\),每条边上有边权,找一条道路,使边权和小于给定的数\(b\),并使最大点权最小. 解析 二分一下 ...

  8. QTcpSever和QTcpSocket实现多线程客户端和服务端;

    QTcpServer提供了newConnection信号, 可以通过connect实现连接槽函数,利用nextPendingConnection 函数获取连接的QTcpSocket * :也可以继承Q ...

  9. Tomcat系列(3)——Tomcat 组件及架构核心部分 4类主要组件(顶层,连接器,容器,嵌套)

    1.架构图 2. 定义 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta ...

  10. [图解Java]Condition

    图解Condition 0. demo 我先给出一个demo, 这样大家就可以根据我给的这段代码, 边调试边看源码了. 还是那句话: 注意"My" , 我把ReentrantLoc ...