Table des matières
Préparation avant développement
Installer l'extension
Utilisez-en un (utilisé dans le projet)
1. Code de vérification de la production
Maison cadre php Laravel Comment implémenter google-authenticator - validateur de code QR Google dans Laravel

Comment implémenter google-authenticator - validateur de code QR Google dans Laravel

Apr 22, 2019 am 10:52 AM
laravel 二维码

Cet article parle principalement de l'utilisation de Laravel pour implémenter le validateur de code QR de Google. Il a une certaine valeur de référence. J'espère que les amis intéressés pourront en apprendre davantage.

Préparation avant développement

  1. Installer Laravel
  2. Installer le générateur de code QRQrCode, vous pouvez le faire sans installation, il sera installé ensuite

Installer l'extension

1. Exécutez le code suivant pour installer le package d'extension :

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

2. Attendez la fin du téléchargement et de l'installation. enregistrez le fournisseur de services dans config/app.php en même temps. Téléchargez la façade correspondante :

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

'aliases' => [
     //..........
    'Google' => Earnp\GoogleAuthenticator\Facades\GoogleAuthenticator::class,
    'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
],
Copier après la connexion

3. Après l'injection de service, si vous souhaitez utiliser une configuration personnalisée, vous pouvez également publier le fichier de configuration dans le fichier de configuration. Répertoire config/views :

1 ###这一步可以不执行:视情况而定
2 php artisan vendor:publish
Copier après la connexion

Utilisez-en un (utilisé dans le projet)

La méthode d'utilisation est très simple, principalement pour générer du code de vérification et vérifier le code de vérification

1. Code de vérification de la production

À l'aide du code de vérification de la productionCreateSecretc'est-à-dire Oui, vous devez générer un code QR pour que le contenu soit analysé par l'application mobile. Le contenu spécifique a été configuré avec succès dans <🎜. >google.blade.php


public function addUser(Request $request)
{
    if($request->isMethod(&#39;get&#39;)){
         // 创建谷歌验证码
         $createSecret = GoogleAuthenticator::CreateSecret();
         //$createSecret = [
         //   "secret" => "NJURUPQN6XNYGSF2"
         //   "codeurl" => "otpauth://totp/?secret=NJURUPQN6XNYGSF2"
         //]
         // 生成二维码
         $createSecret["qrcode"] = QrCode::encoding(&#39;UTF-8&#39;)->size(180)->margin(1)->generate($createSecret["codeurl"]);
         //发送页面
         return view(&#39;auth.auth.add&#39;,[&#39;google&#39;=>$createSecret]);
    }
    //获取数据
    $user_from = $request->only([&#39;role_id&#39;,&#39;username&#39;,&#39;pass&#39;,&#39;pass_confirmation&#39;,&#39;real_name&#39;,&#39;mobile&#39;,&#39;secret&#39;]);
   
    //保存入库 secret会存入数据库
    $auth_user = new AuthUserService();
    $res = $auth_user->addUser($user_from);
    return redirect(&#39;admin/auth/index&#39;);
}
Copier après la connexion
2. Vérifiez le code de vérification

//登录验证
public function login(array $param)
{
    $model = new AuthUserModel();
    //Google 验证
    if(!GoogleAuthenticator::CheckCode($userInfo[&#39;secret&#39;],$param[&#39;secret&#39;])){
        return [&#39;status&#39;=>false,&#39;msg&#39;=>[&#39;secret&#39;=>[&#39;验证码错误,请重新输入&#39;]]];
    }

    $update = $model->editLoginInfo($userInfo[&#39;id&#39;], $update);
    if(!$update){
        return [&#39;status&#39;=>false,&#39;msg&#39;=>[&#39;username&#39;=>&#39;更新登录信息失败&#39;]];
    }else{
        return [&#39;status&#39;=>true,&#39;data&#39;=>$userInfo];
    }
}
Copier après la connexion

Utilisez deux (Démo)

1. Vérifiez le code de vérification

Vérifiez que les codes de vérification sont généralement utilisés pour l'authentification de connexion, utilisez la méthode

Vous devez transmettre CheckCode et <. 🎜>, qui sont des codes de vérification, pour vérification. Le premier est secrect ; retourner onecode Ou secrecttruefalse


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

Tutoriels associés :
use Google;

if ($request->isMethod(&#39;post&#39;)) {
    if (empty($request->onecode) && strlen($request->onecode) != 6) return back()->with(&#39;msg&#39;,&#39;请正确输入手机上google验证码 !&#39;)->withInput();
    // google密钥,绑定的时候为生成的密钥;如果是绑定后登录,从数据库取以前绑定的密钥
    $google = $request->google;
    // 验证验证码和密钥是否相同
    if(Google::CheckCode($google,$request->onecode)) {
        // 绑定场景:绑定成功,向数据库插入google参数,跳转到登录界面让用户登录
        // 登录认证场景:认证成功,执行认证操作
        dd("认证成功");
    }else {
        // 绑定场景:认证失败,返回重新绑定,刷新新的二维码
        return back()->with(&#39;msg&#39;,&#39;请正确输入手机上google验证码 !&#39;)->withInput();
        // 登录认证场景:认证失败,返回重新绑定,刷新新的二维码
        return back()->with(&#39;msg&#39;,&#39;验证码错误,请输入正确的验证码 !&#39;)->withInput();
    }
}else {
    // 创建谷歌验证码
    $createSecret = Google::CreateSecret();
    // 您自定义的参数,随表单返回
    $parameter = [["name"=>"usename","value"=>"123"]];
    return view(&#39;login.google.google&#39;, [&#39;createSecret&#39; => $createSecret,"parameter" => $parameter]);
}
Copier après la connexion
tutoriel vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? Mar 31, 2025 pm 11:24 PM

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Mar 31, 2025 pm 11:48 PM

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Apr 01, 2025 am 07:09 AM

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Serveur de vidage Laravel - Serveur de vidage Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Apr 01, 2025 am 09:09 AM

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel – URL de l'action Laravel – URL de l'action Aug 27, 2024 am 10:51 AM

Laravel - URL d'action - Laravel 5.7 introduit une nouvelle fonctionnalité appelée « URL d'action appelable ». Cette fonctionnalité est similaire à celle de Laravel 5.6 qui accepte la méthode string in action. L'objectif principal de la nouvelle syntaxe introduite par Laravel 5.7 est de diriger

See all articles