Heim > PHP-Framework > Laravel > Hauptteil

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

little bottle
Freigeben: 2019-04-22 10:54:22
nach vorne
7026 Leute haben es durchsucht

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.*
Nach dem Login kopieren

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
],
Nach dem Login kopieren

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
Nach dem Login kopieren

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');
}
Nach dem Login kopieren

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];
    }
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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]);
}
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage