Google 身份驗證器與兩步驗證功能配合,可在您登入 Google 帳戶時為您平添一重安全保障。啟用兩步驗證之後,當您登入帳戶時,需要提供密碼和此應用生成的驗證碼。配置完成後,無需網路連線或蜂窩連線即可獲得驗證碼。參考連結 [ 擴充包: laravel-google-authenticator ] 通過Google身份驗證器為你的網站打造一個動態手機令牌
為什麼使用兩步認證
- 相對於驗證碼,安全很多;幾乎是不會存在破解的方法
- 驗證碼有時候無法識別,不方便操作
- 一機一碼,不會存在賬號盜用的問題
- 動態驗證,每30秒生產一個驗證碼,安全更加保障
開發前的準備
- 安裝Laravel
- 安裝二維碼生成器
QrCode
,沒有安裝也可以,接下來會安裝
安裝擴充
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
使用
使用方法非常簡單,主要為生成驗證碼和教研驗證碼
1、生產驗證碼
生產驗證碼使用CreateSecret
即可,你需要將其內容生成二維碼供手機APP掃描,具體內容在google.blade.php
中已經配置成功
// 建立谷歌驗證碼
$createSecret = Google::CreateSecret();
// 您自定義的引數,隨表單返回
$parameter = [["name"=>"usename","value"=>"123"]];
return view('login.google.google', ['createSecret' => $createSecret,"parameter" => $parameter]);
2、校驗驗證碼
校驗驗證碼一般用於繫結,登入認證中,使用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身份驗證器為你的網站打造一個動態手機令牌