欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Laravel 集成 Geetest驗(yàn)證碼的方法

 更新時(shí)間:2018年05月14日 10:43:40   作者:那就遠(yuǎn)走  
這篇文章主要介紹了Laravel 集成 Geetest驗(yàn)證碼的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Geetest 集成大致過(guò)程

  1. 實(shí)現(xiàn)登錄的大致邏輯
  2. 注冊(cè)一個(gè)極驗(yàn)的帳號(hào)
  3. 在 “極驗(yàn)” 的后臺(tái)管理中注冊(cè)一個(gè)行為驗(yàn)證
  4. 根據(jù) 官方Demo 配置我們的控制器和路由
  5. 根據(jù) 官方Demo 配置我們的登錄模板
  6. 測(cè)試

Geetest 集成詳細(xì)過(guò)程

1、實(shí)現(xiàn)登錄的大致邏輯

創(chuàng)建控制器 php artisan make:controller GeetestController

編輯控制器 /app/Http/Controllers/GeetestController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

/**
* 這是一個(gè)集成 Geetest 驗(yàn)證碼的 Demo 類
*/
class GeetestController extends Controller
{ 
 /**
 * 導(dǎo)入登錄視圖
 */
 public function login() {
  return view('Geetest/login');
 }

 /**
 * 驗(yàn)證用戶信息
 */
 public function check() {
  return '用戶已經(jīng)在前端通過(guò)了驗(yàn)證碼驗(yàn)證, 你可以在這里完善后續(xù)的邏輯';
 }
}

視圖就是簡(jiǎn)單的表單,省略。

2、省略 => “注冊(cè)”

3、省略 => “后臺(tái)登錄” => “行為驗(yàn)證” => 申請(qǐng)一個(gè) id & key

4、配置控制器和路由

首先, Demo 給出的核心類庫(kù) 是一個(gè)類文件叫 class.geetestlib.php, 類名叫 GeetestLib 。我們創(chuàng)建一個(gè)類名一樣的控制器來(lái)代替它 php artisan make:controller GeetestLib

不要拷貝類,拷貝類里面的內(nèi)容進(jìn)來(lái)即可

GeetestController 控制器實(shí)現(xiàn)邏輯

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\GeetestLib; // 我們創(chuàng)建然后拷貝得來(lái)的 GeetestLib 核心庫(kù)

/**
* 這是一個(gè)集成 Geetest 驗(yàn)證碼的 Demo 類
*/
class GeetestController extends Controller
{ 
 // 這里配置 id & key
 private $captchaId = "5d467a3cb22a9310837d51720c5251f0";
 private $privateKey = "40764e6b94344f780d4b6b07148c9495";

 /**
 * 導(dǎo)入登錄視圖
 */
 public function login() {
  return view('Geetest/login');
 }

 /**
 * 驗(yàn)證用戶信息
 */
 public function check() {
  return '用戶已經(jīng)在前端通過(guò)了驗(yàn)證碼驗(yàn)證, 你可以在這里完善后續(xù)的邏輯';
 }

 /**
 * 實(shí)現(xiàn)驗(yàn)證功能: 直接復(fù)制官方demo提供得
 */
 public function startCaptchaServlet() {
  // 這里使用配置的 id & key
  $GtSdk = new GeetestLib($this->captchaId, $this->privateKey);
  session_start();
  
  $data = array(
   "user_id" => "test", # 網(wǎng)站用戶id
   "client_type" => "web", #web:電腦上的瀏覽器;h5:手機(jī)上的瀏覽器,包括移動(dòng)應(yīng)用內(nèi)完全內(nèi)置的web_view;native:通過(guò)原生SDK植入APP應(yīng)用的方式
   "ip_address" => "127.0.0.1" # 請(qǐng)?jiān)诖颂巶鬏斢脩粽?qǐng)求驗(yàn)證時(shí)所攜帶的IP
  );
  
  $status = $GtSdk->pre_process($data, 1);
  $_SESSION['gtserver'] = $status;
  $_SESSION['user_id'] = $data['user_id'];
  echo $GtSdk->get_response_str();
 }
}

配置路由 /routes/web.php

// 集成 Geetest 驗(yàn)證碼
Route::get('GeetestLogin', 'GeetestController@login'); //登錄頁(yè)面
Route::get('GeetestCheck', 'GeetestController@check'); //登錄驗(yàn)證 (我們沒(méi)寫(xiě)具體邏輯)
Route::get('GeetestStartCaptchaServlet', 'GeetestController@startCaptchaServlet'); // 調(diào)用方法啟用驗(yàn)證碼

5、完善登錄模板 /resources/views/Geetest/login.blade.php

需要導(dǎo)入 jquery (我們用npm run dev編譯的app.js整合了jquery)

需要導(dǎo)入 Demo 給出 gt.js ,我們放在 public/js 下 <script src="/js/gt.js"></script>

其實(shí)理論上還可以放在 /resouces/assets/js/ 下, 并且在 /resouces/assets/js/app.js 中 require 進(jìn)來(lái)讓它參與被編譯,直接在 public/js 中打包整合生效。

在模板上,需要定義兩個(gè)樣式類 .show & .hide => 用于 gt.js 操控提示信息的樣式 同樣可以寫(xiě)進(jìn) /resouces/assets/sass/ 下

給 表單提交 “登錄” 按鈕一個(gè)id

拷貝 Demo 中提供的前端 邏輯js, 注意綁定下這個(gè)按鈕

注意下 .ajax 配置的 url 必須是我們?cè)?web.php 中定義的路有 'GeetestStartCaptchaServlet'

具體代碼

<!DOCTYPE html>
<html lang="zh-CN">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">

 <!-- 這是我們用 npm run dev 編譯后的 css / js -->
 <link rel="stylesheet" href="/css/app.css" rel="external nofollow" >
 <script src="/js/app.js"></script>

 <!-- 這里需要用到兩個(gè)樣式 -->
 <style>
  .show {
   display: block;
  }
  .hide {
   display: none;
  }
 </style>

 <title> Geetest 集成 Demo</title>
</head>
<body>
 <div class="container">
  <div class="row">
   <div class="col-lg-12">
    <h1 class="text-center">Geetest 集成 Demo
     <small>
      <a  rel="external nofollow" rel="external nofollow" > Geetest 官方網(wǎng)站 </a>
     </small> 
    </h1>
   </div>
   <div class="col-lg-12">
    <form method="GET" action="/GeetestCheck">
     <div class="form-group">
      <label for="exampleInputEmail1">模擬郵箱地址</label>
      <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="請(qǐng)輸入郵箱...">
      <small id="emailHelp" class="form-text text-muted">我們不會(huì)公開(kāi)您的郵箱</small>
     </div>
     <div class="form-group">
      <label for="exampleInputPassword1">模擬密碼</label>
      <input type="password" class="form-control" id="exampleInputPassword1" placeholder="請(qǐng)輸入密碼...">
     </div>
     <div class="form-group">
      <div id="embed-captcha"></div>
      <p id="wait" class="show">正在加載驗(yàn)證碼......</p>
      <p id="notice" class="hide">請(qǐng)先完成驗(yàn)證</p>
     </div>
     <!-- 這里需要綁定一個(gè)按鈕 -->
     <button type="submit" class="btn btn-primary" id="embed-submit">登錄</button>
    </form>
   </div>
  </div>
 </div>

 <!-- 引用 gt.js -->
 <script src="/js/gt.js"></script>
 <!-- 直接復(fù)制官方Demo里的js代碼 -->
 <script>
  var handlerEmbed = function (captchaObj) {
   $("#embed-submit").click(function (e) {
    var validate = captchaObj.getValidate();
    if (!validate) {
     $("#notice")[0].className = "show";
     setTimeout(function () {
      $("#notice")[0].className = "hide";
     }, 2000);
     e.preventDefault();
    }
   });
   // 將驗(yàn)證碼加到id為captcha的元素里,同時(shí)會(huì)有三個(gè)input的值:geetest_challenge, geetest_validate, geetest_seccode
   captchaObj.appendTo("#embed-captcha");
   captchaObj.onReady(function () {
    $("#wait")[0].className = "hide";
   });
   // 更多接口參考:http://www.geetest.com/install/sections/idx-client-sdk.html
  };
  $.ajax({
   // 獲取id,challenge,success(是否啟用failback)
   url: "/GeetestStartCaptchaServlet", // 加隨機(jī)數(shù)防止緩存
   type: "get",
   dataType: "json",
   success: function (data) {
    console.log(data);
    // 使用initGeetest接口
    // 參數(shù)1:配置參數(shù)
    // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它做appendTo之類的事件
    initGeetest({
     gt: data.gt,
     challenge: data.challenge,
     new_captcha: data.new_captcha,
     product: "embed", // 產(chǎn)品形式,包括:float,embed,popup。注意只對(duì)PC版驗(yàn)證碼有效
     offline: !data.success // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī),一般不需要關(guān)注
     // 更多配置參數(shù)請(qǐng)參見(jiàn):http://www.geetest.com/install/sections/idx-client-sdk.html#config
    }, handlerEmbed);
   }
  });
 </script>
</body>
</html>

測(cè)試成功

可以優(yōu)化的地方

最好不要用一個(gè) “控制器” 充當(dāng)核心類庫(kù), 應(yīng)該把GeetestLib 想辦法集成到另一個(gè)地方去

視圖模板上的 js & css 應(yīng)該寫(xiě)在 resources/assets 里面參與生成 app.css & app.js 的編譯

具體登錄邏輯我們沒(méi)寫(xiě)。應(yīng)該還可以在登錄驗(yàn)證 check() 方法再確認(rèn)一次 Geetest驗(yàn)證 是否成功,可以參考 Demo

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ThinkPHP框架整合微信支付之刷卡模式圖文詳解

    ThinkPHP框架整合微信支付之刷卡模式圖文詳解

    這篇文章主要介紹了ThinkPHP框架整合微信支付之刷卡模式,結(jié)合圖文形式詳細(xì)分析了thinkPHP框架整合微信支付的刷卡模式實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Laravel學(xué)習(xí)教程之本地化模塊

    Laravel學(xué)習(xí)教程之本地化模塊

    這篇文章主要給大家介紹了關(guān)于Laravel學(xué)習(xí)教程之本地化模塊的相關(guān)資料,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • laravel通用化的CURD的實(shí)現(xiàn)

    laravel通用化的CURD的實(shí)現(xiàn)

    這篇文章主要介紹了laravel通用化的CURD的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Yii2實(shí)現(xiàn)ActiveForm ajax提交

    Yii2實(shí)現(xiàn)ActiveForm ajax提交

    這篇文章主要 為大家詳細(xì)介紹了Yii2實(shí)現(xiàn)ActiveForm ajax提交的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Yii框架組件和事件行為管理詳解

    Yii框架組件和事件行為管理詳解

    這篇文章主要介紹了Yii框架組件和事件行為管理,詳細(xì)分析了Yii框架組件管理與行為管理的原理與使用技巧,需要的朋友可以參考下
    2016-05-05
  • php-fpm配置詳解

    php-fpm配置詳解

    這篇文章主要介紹了php-fpm配置詳解,需要的朋友可以參考下
    2014-02-02
  • PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器

    PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器

    這篇文章主要介紹了PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 基于PHP-FPM進(jìn)程池探秘

    基于PHP-FPM進(jìn)程池探秘

    下面小編就為大家?guī)?lái)一篇基于PHP-FPM進(jìn)程池探秘。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • CentOS下搭建PHP環(huán)境與WordPress博客程序的全流程總結(jié)

    CentOS下搭建PHP環(huán)境與WordPress博客程序的全流程總結(jié)

    這篇文章主要介紹了CentOS下搭建PHP環(huán)境與WordPress博客程序的全流程總結(jié),這里我們以Apache服務(wù)器程序和MySQL數(shù)據(jù)庫(kù)程序?yàn)槔M(jìn)行講解,需要的朋友可以參考下
    2016-05-05
  • Laravel 中使用 Vue.js 實(shí)現(xiàn)基于 Ajax 的表單提交錯(cuò)誤驗(yàn)證操作

    Laravel 中使用 Vue.js 實(shí)現(xiàn)基于 Ajax 的表單提交錯(cuò)誤驗(yàn)證操作

    這篇文章主要介紹了Laravel 中使用 Vue.js 實(shí)現(xiàn)基于 Ajax 的表單提交錯(cuò)誤驗(yàn)證功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06

最新評(píng)論