Laravel-google-authenticator--Google验证码
开发前的准备
- 安装Laravel
- 安装二维码生成器
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
方法即可,需要传入secrect
和onecode
即验证码即可进行校验,第一个为secrect
;返回true
或false
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验证码的更多相关文章
- SSH + Google Authenticator 安全加固
1. SSH连接 Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境.SSH通过在网络中创建安全隧道来实现SSH客户端与服务器 ...
- Linux下使用Google Authenticator配置SSH登录动态验证码
1.一般ssh登录服务器,只需要输入账号和密码.2.本教程的目的:在账号和密码之间再增加一个验证码,只有输入正确的验证码之后,再输入密码才能登录.这样就增强了ssh登录的安全性.3.账号.验证码.密码 ...
- Google Authenticator
Google Authenticator 现在越来越多的网站采用两步验证,实现方式可能有所区别,一般来说是 1+? (1 即 普通的用户名和密码, ?可能是实物如U盾.手机短信验证码或其他).?的重点 ...
- 为效率而生:开源Mac版Google Authenticator认证客户端GoldenPassport
最近运维同学为了提高安全性,用Google Authenticator对服务器加了双重认证,此后登录服务器需要先输入动态密码,在输入服务器密码.Google Authenticator相当于软toke ...
- java实现谷歌二步验证 (Google Authenticator)
准备: 一个谷歌二步验证APP, 我用的是ios 身份宝 资料: 1.Google Authenticator 原理及Java实现 //主要参考 https://blog.csdn.net/li ...
- 【Linux】使用Google Authenticator 实现ssh登录双因素认证
一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...
- Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator)
一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...
- Google Authenticator(谷歌身份验证器)
<!DOCTYPE html>Google Authenticator(谷歌身份验证器) ] Google Authenticator(谷歌身份验证器) Google Authentica ...
- Google Authenticator(谷歌身份验证器)C#版
摘要:Google Authenticator(谷歌身份验证器),是谷歌公司推出的一款动态令牌工具,解决账户使用时遭到的一些不安全的操作进行的"二次验证",认证器基于RFC文档中的 ...
- ssh密码登录+ Google Authenticator 实现双向认证
通常我们直接通过ssh输入密码连接服务器,但这样很容易出现暴力破解情况,所以我们可以结合google的动态认证+ssh密码,这样能够大大的提升登陆的安全. 简单来说,就是当用户通过ssh登陆系统时,先 ...
随机推荐
- 《Python从入门基础到实践》
<Python学习——从入门到实践> 第1章 Python语言概述 1.1 从计算机到编程 1.1.1 程序语言的演变:机器语言,汇编语言,高级语言 1.1.1.1 演变原因 1.1.1. ...
- Python基础:搭建开发环境(1)
1.Python语言简介 2.Python环境 Python环境产品存在多个. 2.1 CPython CPython是Python官方提供的.一般情况下提到的Python就是指CPython,CPy ...
- Consecutive Sum LightOJ - 1269(区间异或和)
Consecutive Sum 又来水一发blog... 本来是昨天补codechef的题,最后一道题是可持久化字典树,然后去黄学长博客看了看 觉得字典树写法有点不太一样,就想着用黄学长的板子写码几道 ...
- [ffmpeg] 定制滤波器
如果有定制ffmpeg滤波器的需求,有两个结构体是必须要了解的:AVFilter.AVFilterPad,所定制的滤波器主要就是通过填充这两个结构体来实现的.我们下面将详细解析这两个结构体,并通过对滤 ...
- Oracle 给予访问其他用户包的权限
grant execute on apps.SPM_CON_INVOICE_INF_PKG to diq; grant DEBUG on apps.SPM_CON_INVOICE_INF_PKG t ...
- Tornado实现多进程/多线程的HTTP服务
用tornado web服务的基本流程 实现处理请求的Handler,该类继承自tornado.web.RequestHandler,实现用于处理请求的对应方法如:get.post等.返回内容用sel ...
- python学习日记(正则表达式)
定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...
- python学习日记(模块导入)
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...
- 「洛谷4197」「BZOJ3545」peak【线段树合并】
题目链接 [洛谷] [BZOJ]没有权限号嘤嘤嘤.题号:3545 题解 窝不会克鲁斯卡尔重构树怎么办??? 可以离线乱搞. 我们将所有的操作全都存下来. 为了解决小于等于\(x\)的操作,那么我们按照 ...
- LOJ子序列
题目描述 https://loj.ac/problem/6074 题解 对于子序列的dp,我们可以设置一个dp. 我们设dp[i]表示以i这个字符结尾的子序列个数,转移为dp[i]+=∑dp[k]-d ...