📔
Blog
HOMEPORTFOLIOHIRE MEGITHUB
  • Home
  • 🙇Database
    • Oracle Database
      • 🍏LDOM Oracle VM for SPARC
      • 🍎Oracle Processor Core Factor Table
      • 🍐Check Oracle Error in Alert Log with SQL*Plus
      • 🍊Create Oracle Corrupt Data Block
      • 🍋RMAN Backup Tuning
      • 🍌Install NTP on Oracle Linux
      • 🍉Best Practice Check Tablespace Size on Oracle
      • 🍇Fix Password File Missing on Oracle
      • 🫐Check Oracle Error Message with OERR
      • 🍓Change and Restore Password on Oracle
      • 🍈Fix Oracle could not find Archive Log
      • 🍒Check Database Uptime on Oracle
      • 🍑Fix Oracle Date Format
      • 🥭Identity Column on Oracle
      • 🍍Fix Oracle Service handle not Initialized
      • 🥥GoldenGate Credential Store
      • 🥝Create Auto Increment on Oracle
      • 🍅Recompile Object Invalid on Oracle
      • 🍆Create Database Link on Oracle
      • 🥑Cluster vs Grid
      • 🫒Install DBSAT for Oracle Database 11gR2
      • 🥦Fix Oracle End-of-File on Communication Channel
      • 🥬Fix Oracle Database Out of Memory
      • 🫑Export and Import Oracle Database with Data Pump
      • 🥒Monitor Log Switch each Hour of Day on Oracle with SQL*Plus
      • 🌶️Change Column Format on Oracle with SQL*Plus
      • 🌽Check Version Component on Oracle with SQL*Plus
      • 🥕Check Database Size on Oracle with SQL*Plus
      • 🧄Migrate Oracle Database with RMAN
      • 🧅Fix Enterprise Manager Error OC4J Configuration issue
    • Microsoft SQL Server
      • 💊Backup SQL Server Database with SQL Backup and FTP
      • 💉Backup Full SQL Server with SQL Script
  • 🙇‍♀️INFRASTRUCTURE
    • DNS
      • 📦Fix Ldap Error Search Configuration Naming Context failed
      • 📦Join Domain to Active Directory on Ubuntu 22.04
      • 📦Sender Policy Framework Record
      • 📦Migrate User on Active Directory to Another Domain
      • 📦Fix can’t Delete Object on Active Directory
      • 📦Create Conditional Forwarder DNS on Windows Server 2012 R2
      • 📦Create Stub DNS Zone on Windows Server 2012 R2
      • 📦Domain Permission Admin
      • 📦Domain Model
      • 📦Active Directory ( AD ) 101
    • Network
      • 👥Local Area Network 101
      • 👥Export and Import Session on SecureCRT
      • 👥VPN Protocol
    • Security
      • 🎩Scam Mail
      • 🎩Disable Antivirus Protection on Windows 10
      • 🎩Fix Security Certificate is not Trusted
      • 🎩Best Practice Ransomware Protection
      • 🎩Digital Forensic
      • 🎩Check Installed Patch Compare Vulnerable on Windows 10
    • ISO 27001
      • 🐶Scenario-Based Risk
  • 🙇‍♂️Server
    • Windows Server
      • 👺Upgrade Windows Server 2003 SP2 to Windows Server 2008 R2
      • 👺Best Practice After Install Windows Server
      • 👺Windows Server Product Key
      • 👺How to convert PFX to CRT and KEY File on Windows Server
      • 👺Check Security Windows Application with Winchecksec
      • 👺Fix Internet Explorer Block Website on Windows Server 2019
      • 👺Install Windows Admin Center on Windows Server 2019
    • Linux Server
      • 👿Fix SSH Error: no matching key exchange method found
      • 👿Fix Ubuntu Package Manager Lock: Could not get lock /var/lib/dpkg/lock
      • 👿Install Kali Linux GUI on Windows Subsystem for Linux
      • 👿How to get DateTime History on Linux
      • 👿Change IP and Hostname on Ubuntu 18.04
      • 👿iSCSI Initiator on CentOS 7
      • 👿TMUX Command
      • 👿Create User on Linux
      • 👿Change Username and UID / GID on Linux
    • User
      • 👽OSQuery
      • 👽How to decompress GZIP, BZIP and TAR File on Windows 10
      • 👽Upgrade Windows 10 Version 1803 to 1903
      • 👽Join Windows Insider Program on Windows 10
      • 👽Fix RDP Error Exceeded the Maximum Number of Allowed Connections
      • 👽How to enable DNS over HTTPS on Firefox
  • 🧑‍🍼Software
    • VMware
      • 🌠Fix Deploy OVA Error no Support Hardware Versions on VMware ESXi 6.7
      • 🌠VMware Workstation and VMware ESXi Compatible
      • 🌠Promiscuous Mode and Forged Transmits on VMware vSphere 6.5
      • 🌠Update Patches on VMware ESXi 6.7 with ESXCLI
      • 🌠Fix Alert Hyperthreading Unmitigated on VMware ESXi 6.7
      • 🌠Fix VMware Error Client Session is no Longer Authenticated
      • 🌠Merge AVHDX and VHDX for Convert to VMDK
      • 🌠Convert VMDK to VHDX with Microsoft Virtual Machine Converter
      • 🌠Fix VMware Workstation Device / Credential Guard are not Compatible
      • 🌠Convert VMDK to VHDX with StarWind V2V Converter
    • Veeam Backup
      • 🧊Install Veeam Backup & Replication 11 on Windows
      • 🧊Backup Planning Matrix
      • 🧊Fix Veeam Backup Error Full Backup File Merge Failed
    • ESET
      • 🐕‍🦺Fix can’t Uninstall ESET Management Agent
  • 👩‍🍼Programming
    • Fundamental
      • 🔵ID Token vs Access Token
      • 🔴NULL vs NOT NULL
      • 🟣Microsoft Universal Data Access
      • 🟡Flow Graph Aptitude Test
      • 🟠C Pyramid – Part I
      • 🟤C Pyramid – Part II
      • ⚪JSON Web Token
      • 🟦Memory Architecture
    • Tools
      • AI Tools
        • ❤️Generative AI Tools
        • 💙Prompt Tools
        • 💚Dataset Tools
      • Extension Tools
        • ❄️Top Extension Microsoft Edge
        • ❄️Top Extension Visual Studio Code
      • Other Tools
        • 🚗Business Tools
        • 🚕CI/CD Tools
        • 🚙Design Tools
        • 🛻Freelance Tools
        • 🚌Hands-On Lab Tools
        • 🚎Productive Tools
        • 🏎️Programming Tools
        • 🚓SEO Tools
        • 🚑Mac Tools
      • Package Tools
        • 🧶Top NuGet Package .NET Core
      • Visual Studio Code
        • 🌑How to show Folder .git in Visual Studio Code
        • 🌑Fix CMake not Found Visual Studio
        • 🌑Backup Extension for Visual Studio Code
    • Python
      • Poetry
        • 🐍Poetry Virtual Environment Command
    • PHP
      • Laravel
        • 🍂Laravel Redis Key-Value Store
    • .NET Core
      • 🐹.NET Core Automatic Code Review with SonarQube
      • 🐹.NET Core Disable Authentication in Development Environment
      • 🐹Overview .NET Core
  • 👨‍🍼Other
    • Blog
      • 🎃Blog Dell
      • 🎃Blog Gitbook
      • 🎃Blog Network
    • Big Data
      • 🐱Big Data ของกระทรวงสาธารณสุข
    • Chat Bot
      • Chatfuel
        • 🍭Facebook Chatbot with Chatfuel
      • Dialogflow
        • ⛱️Dialogflow Connect Multiple Firebase Realtime Database
        • ⛱️Chatbot with Dialogflow and Firebase Realtime Database
    • Docker
      • 🐳How to Trust Sign Image on Docker
      • 🐳Upgrade Docker Compose
      • 🐳Install Nginx-RTMP and FSTV-Monitor on Docker
    • Machine Learning
      • 🧤PC SPEC for Deep Learning 2021
      • 🧤Install YOLO Object Detection on Windows 10
      • 🧤Thai Natural Language Processing with Python
      • 🧤Install Tensorflow with GPU on Windows 10
      • 🧤PC SPEC for Deep Learning 2019
      • 🧤Speech to Text with Google API
      • 🧤CUDA-Z
      • 🧤DVC Version Control for Machine Learning
    • Standard
      • 🧬Digital ID
      • 💻Computer Naming Convention
      • 🎁มาตรฐานข้อมูลกลาง
    • Policy
      • 🍔GDPR & PDPA
      • 🍟TDPG 2.0
      • 🍕Cookie Consent
    • WSL
      • 🧿How to move Distribution Data WSL to new Location
      • 🧿Export and Import Distro on Windows Subsystem for Linux
      • 🧿Install Docker on Windows Subsystem for Linux
  • 🧙‍♂️MICROSOFT 365
    • Outlook
      • 📩How to enable Forward Email on Microsoft Office 365 to Another Domain
      • 📩Fix Mailbox Storage Limit on Microsoft Office 365 with Compliance Search
      • 📩Fix can’t Search Thai Language on Microsoft Outlook
    • Power Automate
      • 🤖How to Rename all Files in Folder use UUID with Power Automate Desktop
      • 🤖How to get SharePoint List Comment with Power Automate
      • 🤖How to post Approve Comment to SharePoint List with Power Automate
      • 🤖Generate Unique ID when Submit Microsoft Form with Power Automate
      • 🤖Notification Maintenance when SharePoint List Create with Power Automate
      • 🤖Send Email and Share File Word Document with Power Automate
      • 🤖Generate Word Document when Submit Microsoft Form with Power Automate
Powered by GitBook
On this page

Was this helpful?

  1. Programming
  2. PHP
  3. Laravel

Laravel Redis Key-Value Store

หลังจากที่เราลองได้ติดตั้ง Redis และ Redis GUI กันไปแล้ว เราจะมาใช้งาน Redis บน Laravel ในการเก็บข้อมูล OTP กัน ซึ่งถ้าหากไม่คิดอะไรมากเราอาจจะเก็บมันแบบ Session แต่ถ้าหากอยากใช้ Redis เพื่อการเก็บข้อมูลจากการ Query Database เราก็จะมาลองเก็บข้อมูล OTP กันก่อน

Get Started

  • ทำการติดตั้ง Laravel Package ผ่าน Composer

C:\>
composer require predis/predis
  • ทำการแก้ไขไฟล์ config/app.php

app.php
'redis' => [

    'client' => 'predis',

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
        'read_write_timeout' => 60,
    ],

    'cache' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_CACHE_DB', 1),
    ],

],
  • ทำการ Create Route ในไฟล์ routes/web.php

web.php
<?php

Route::post('otp/generate','OtpController@index');
Route::post('otp/verified','OtpController@verified');
Route::get('otp/session','OtpController@session');
  • ทำการแก้ไขไฟล์ app/Http/Controller/OtpController.php

OtpController.php
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Redis;

class OtpController extends Controller
{
    public function index(Request $request)
    {
        $email = $request->email;
        $ldap = app("App\Http\Controllers\LdapController")->find($email);
        if ($ldap == 'Successfull') {
            $otp = $this->generate();
            $session = now()->timestamp;
            Redis::rpush($session, $email, $otp);
            Redis::expire($session, 300); // 5 minutes
	    $subject = 'One Time Passcode (OTP)';
	    $body = 'Your One Time Passcode (OTP) is: ' . $otp . '';
            $mail = app("App\Http\Controllers\MailController")->sendmail($email, $subject, $body);
            if ($mail == 'Successful') {
                $node = response()->json(['status' => 'Successful', 'session' => $session]);
            } else {
                $node = response()->json(['status' => 'Failed', 'message' => 'Can not sendmail']);
            }            
	} else {
	    $node = response()->json(['status' => 'Failed', 'message' => 'Not found user on active directory']);
        }       

        return $node;

    }

    public function generate()
    {
        $otp = Str::random(6);
        return $otp;
    }

    public function verified(Request $request)
    {
        $session = $request->session;
        $otp = $request->otp;

        if (Redis::lrange($session, 0, 0) != NULL) {
            $session_otp = Redis::lrange($session, 1, 1);
            if ($session_otp[0] == $otp) {
                Redis::del($session);
                $node = response()->json(['status' => 'Successful']);
            } else {
                $node = response()->json(['status' => 'Failed', 'message' => 'Invalid otp']);
            }
        } else {
            $node = response()->json(['status' => 'Failed', 'message' => 'Not found session']);
        }

        return $node;
    }

    public function session(Request $request)
    {
        $session = $request->session;

        if (Redis::lrange($session, 0, 0) != NULL) {
            $session_email = Redis::lrange($session, 0, 0);
            $session_otp = Redis::lrange($session, 1, 1);
            $node = response()->json(['email' => $session_email[0], 'otp' => $session_otp[0]]);
        } else {
            $node = response()->json(['status' => 'Failed', 'message' => 'Not found session']);
        }

        return $node;
    }

    public function flush()
    {
        Redis::flushDB();
        return response()->json(['status' => 'Successful']);
    }
    
}
  • ทำการตรวจสอบผ่าน Redis GUI

Last updated 1 year ago

Was this helpful?

อ่านเพิ่มเติม :

👩‍🍼
🍂
https://bit.ly/2kv4xPn