Heim  >  Artikel  >  PHP-Framework  >  So implementieren Sie Google-Authenticator – Google QR-Code-Validator in Laravel

So implementieren Sie Google-Authenticator – Google QR-Code-Validator in Laravel

little bottle
little bottlenach vorne
2019-04-22 10:52:057014Durchsuche

In diesem Artikel geht es hauptsächlich um die Verwendung von Laravel zur Implementierung des Google QR-Code-Validators. Ich hoffe, dass interessierte Freunde davon erfahren können.

Vorbereitung vor der Entwicklung

  1. Installieren Sie Laravel
  2. Installieren Sie den QR-Code-GeneratorQrCode, Sie können dies ohne Installation tun, er wird als nächstes installiert

Installieren Sie die Erweiterung

1. Führen Sie den folgenden Code aus, um das Erweiterungspaket zu installieren:

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

2. Warten Sie, bis der Download und die Installation abgeschlossen sind Dienstanbieter in config/app.php und registrieren Sie die entsprechende Fassade:

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

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

3. Wenn Sie nach der Dienstinjektion eine benutzerdefinierte Konfiguration verwenden möchten, können Sie die Konfigurationsdatei auch im Verzeichnis config/views veröffentlichen:

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

Verwenden Sie einen (im Projekt verwendeten)

Die Verwendungsmethode ist sehr einfach, hauptsächlich zum Generieren eines Bestätigungscodes und zum Überprüfen des Bestätigungscodes

1. Erstellen Sie einen Bestätigungscode

Verwenden Sie CreateSecret, um einen Bestätigungscode zu erstellen. Der Inhalt generiert einen QR-Code, den die mobile APP scannen kann. Der spezifische Inhalt wurde erfolgreich in google.blade.php

konfiguriert


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. Verifizierungscode

//登录验证
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];
    }
}

Verwenden Sie zwei (Demo)

1. Verifizierungscode

Verifizierungscodes werden im Allgemeinen für die Bindung und Anmeldeauthentifizierung verwendet. Verwenden Sie einfach die Methode CheckCode und secrect, bei denen es sich um Bestätigungscodes handelt. Die erste ist onecode ; return secrect oder truefalse


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

Hier ist ein konkretes praktisches Beispiel:

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]);
}

Verwandte Tutorials:

Laravel-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Google-Authenticator – Google QR-Code-Validator in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen