开发前的准备

  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. Oracle查询字符串数据进行排序,以及去重复

    原本的的一张表,填写数据的字段为字符串varchar2类型,然后进行排序的时候,就会出现问题.会默直接默认判断为第一个数字9最大,而不判断整个数字的大小. 所以,就要用到TO_NUMBER函数 sel ...

  2. Windows 10 & React Native & Android

    Windows 10 & React Native & Android https://facebook.github.io/react-native/docs/getting-sta ...

  3. linux命令(方可)

    解压:tar -xvf xxx.tar.gz 查看:rpm -qa | grep xxx卸载:rpm -e --nodeps xxx批量卸载:rpm -qa | grep xxx | xargs rp ...

  4. Spring框架知识整理

    Spring框架主要构成 Spring框架主要有7个模块: 1.Spring AOP:面向切面编程思想,同时也提供了事务管理. 2.Spring ORM:提供了对Hibernate.myBatis的支 ...

  5. mysql varcahr转int类型

    cast(yysid as SIGNED INTEGER)

  6. ab命令

    ab -V -n在测试会话中所执行的请求个数.默认时,仅执行一个请求.请求的总数量 -c一次产生的请求个数.默认是一次一个.请求的用户量 -t测试所进行的最大秒数.其内部隐含值是-n 50000,它可 ...

  7. C#面向对象基本概念总结

    快过年了,发一篇自己的复习总结.以下内容均是个人理解,如文章有幸被浏览,如有错误的地方欢迎大家提出,相互学习相互进步! 面向对象三大基本特征:封装,继承,多态 一.类 (对象声明的三种方式:以普通基类 ...

  8. 使用django执行数据更新命令时报错:django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.00 01_initial on database 'default'.

    如果在重新封装更新用户表之前,已经更新了数据表,在数据库中已经有了django相关的依赖表,就会报错: django.db.migrations.exceptions.InconsistentMigr ...

  9. matolop画图

    import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np.exp ...

  10. Spring Security 访问控制 源码解析

    上篇 Spring Security 登录校验 源码解析  分析了使用Spring Security时用户登录时验证并返回token过程,本篇分析下用户带token访问时,如何验证用户登录状态及权限问 ...