Browse Source

极验验证码逻辑优化

MIse 7 years ago
parent
commit
da38cd763a

+ 27 - 0
app/Components/CaptchaVerify.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Components;
+
+use Illuminate\Http\Request;
+
+/**
+ * Class CaptchaVerify 验证码
+ *
+ * @package App\Components
+ */
+
+Class CaptchaVerify 
+{
+    /**
+     * 从后台获取 Geetest_id 和 Geetest_key
+     */
+    public static function geetestGetKey() 
+    {
+        return [
+            "geetest_id" => Helpers::systemConfig()["geetest_id"],
+            "geetest_key" => Helpers::systemConfig()["geetest_key"]
+        ];
+    }
+}
+
+?>

+ 12 - 3
app/Http/Controllers/AuthController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Components\Helpers;
 use App\Components\Helpers;
 use App\Components\IPIP;
 use App\Components\IPIP;
 use App\Components\QQWry;
 use App\Components\QQWry;
+use App\Components\CaptchaVerify;
 use App\Http\Models\Invite;
 use App\Http\Models\Invite;
 use App\Http\Models\User;
 use App\Http\Models\User;
 use App\Http\Models\UserLoginLog;
 use App\Http\Models\UserLoginLog;
@@ -68,8 +69,16 @@ class AuthController extends Controller
                     break;
                     break;
                 case 2:
                 case 2:
                     // Geetest
                     // Geetest
-                    // return Redirect::back()->withInput();
-                    echo 'Geetest';
+                    $result = $this->validate($request, [
+                        'geetest_challenge' => 'required|geetest'
+                    ], [
+                        'geetest' => config('geetest.server_fail_alert')
+                    ]);
+
+                    if (!$result) {
+                        Session::flash('errorMsg', config('geetest.server_fail_alert'));
+                        return Redirect::back()->withInput();
+                    }
                     break;
                     break;
                 case 3:
                 case 3:
                     // Google reCAPTCHA
                     // Google reCAPTCHA
@@ -79,7 +88,7 @@ class AuthController extends Controller
                     # nothing..
                     # nothing..
                     break;
                     break;
             }
             }
-
+            
             // 验证账号并创建会话
             // 验证账号并创建会话
             if (!Auth::attempt(['username' => $username, 'password' => $password], $remember)) {
             if (!Auth::attempt(['username' => $username, 'password' => $password], $remember)) {
                 Session::flash('errorMsg', '用户名或密码错误');
                 Session::flash('errorMsg', '用户名或密码错误');

+ 0 - 32
app/Http/Controllers/CaptchaController.php

@@ -1,32 +0,0 @@
-<?php
-
-namespace App\Http\Controllers;
-
-use Illuminate\Http\Request;
-use Response;
-use Geetest;
-
-/**
- * 验证码控制器
- * Class CaptchaController
-
- * @package App\Http\Controllers
- */
-class CaptchaController extends Controller 
-{
-    /**
-     * @param Request $request
-     */
-    public function geetestPostValidate(Request $request)
-    {   
-        $result = $this->validate($request, [
-            'geetest_challenge' => 'required|geetest'
-        ], [
-            'geetest' => config('geetest.server_fail_alert')
-        ]);
-        
-        if ($result) {
-            return Response::json(['status' => 'success', 'data' => '', 'message' => '服务器二次校验通过']);
-        }
-    }
-} 

+ 1 - 1
composer.json

@@ -8,7 +8,6 @@
         "php": "^7.1.3",
         "php": "^7.1.3",
         "barryvdh/laravel-ide-helper": "^2.5",
         "barryvdh/laravel-ide-helper": "^2.5",
         "fideloper/proxy": "^4.0",
         "fideloper/proxy": "^4.0",
-        "germey/geetest": "^3.0",
         "guzzlehttp/guzzle": "^6.3",
         "guzzlehttp/guzzle": "^6.3",
         "ipip/db": "^1.0",
         "ipip/db": "^1.0",
         "itbdw/ip-database": "^2.0",
         "itbdw/ip-database": "^2.0",
@@ -17,6 +16,7 @@
         "laravel/tinker": "^1.0",
         "laravel/tinker": "^1.0",
         "mews/captcha": "^2.2",
         "mews/captcha": "^2.2",
         "mews/purifier": "^2.1",
         "mews/purifier": "^2.1",
+        "misechow/geetest": "^1.0",
         "openlss/lib-array2xml": "^0.5.1",
         "openlss/lib-array2xml": "^0.5.1",
         "overtrue/laravel-lang": "^3.0",
         "overtrue/laravel-lang": "^3.0",
         "phpoffice/phpspreadsheet": "^1.6",
         "phpoffice/phpspreadsheet": "^1.6",

+ 67 - 59
composer.lock

@@ -1,10 +1,10 @@
 {
 {
     "_readme": [
     "_readme": [
         "This file locks the dependencies of your project to a known state",
         "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
         "This file is @generated automatically"
     ],
     ],
-    "content-hash": "bbe1dbabbde863237148a7122779f9cd",
+    "content-hash": "843bcab1fca65eda3e868852dfa01cf8",
     "packages": [
     "packages": [
         {
         {
             "name": "barryvdh/laravel-ide-helper",
             "name": "barryvdh/laravel-ide-helper",
@@ -978,63 +978,6 @@
             ],
             ],
             "time": "2019-01-10T14:06:47+00:00"
             "time": "2019-01-10T14:06:47+00:00"
         },
         },
-        {
-            "name": "germey/geetest",
-            "version": "v3.0.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Germey/LaravelGeetest.git",
-                "reference": "311e9b4e496b4e44cc570f29a2e17028a3454652"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Germey/LaravelGeetest/zipball/311e9b4e496b4e44cc570f29a2e17028a3454652",
-                "reference": "311e9b4e496b4e44cc570f29a2e17028a3454652",
-                "shasum": "",
-                "mirrors": [
-                    {
-                        "url": "https://dl.laravel-china.org/%package%/%reference%.%type%",
-                        "preferred": true
-                    }
-                ]
-            },
-            "require": {
-                "laravel/framework": "5.*",
-                "php": ">=5.6.0"
-            },
-            "require-dev": {
-                "mockery/mockery": "dev-master",
-                "phpunit/phpunit": "~4.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.1-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Germey\\Geetest\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Germey",
-                    "email": "[email protected]"
-                }
-            ],
-            "description": "Geetest Package for Laravel5",
-            "keywords": [
-                "Germey",
-                "geetest",
-                "laravel"
-            ],
-            "time": "2018-07-12T12:06:28+00:00"
-        },
         {
         {
             "name": "guzzlehttp/guzzle",
             "name": "guzzlehttp/guzzle",
             "version": "6.3.3",
             "version": "6.3.3",
@@ -2359,6 +2302,71 @@
             ],
             ],
             "time": "2018-10-05T20:13:17+00:00"
             "time": "2018-10-05T20:13:17+00:00"
         },
         },
+        {
+            "name": "misechow/geetest",
+            "version": "v1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/MIseChow/laravel-geetest.git",
+                "reference": "dcf3a24f460362cb32836058b0043ee29aba35e8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/MIseChow/laravel-geetest/zipball/dcf3a24f460362cb32836058b0043ee29aba35e8",
+                "reference": "dcf3a24f460362cb32836058b0043ee29aba35e8",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://dl.laravel-china.org/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "laravel/framework": "5.*",
+                "php": ">=5.6.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "dev-master",
+                "phpunit/phpunit": "~4.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                },
+                "laravel": {
+                    "providers": [
+                        "Misechow\\Geetest\\GeetestServiceProvider"
+                    ],
+                    "aliases": {
+                        "Geetest": "Misechow\\Geetest\\Facades\\Geetest"
+                    }
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Misechow\\Geetest\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "MIseChow",
+                    "email": "[email protected]"
+                }
+            ],
+            "description": "Geetest Package for Laravel5",
+            "keywords": [
+                "Misechow",
+                "geetest",
+                "laravel"
+            ],
+            "time": "2019-03-18T07:33:09+00:00"
+        },
         {
         {
             "name": "mobiledetect/mobiledetectlib",
             "name": "mobiledetect/mobiledetectlib",
             "version": "2.8.33",
             "version": "2.8.33",

+ 2 - 2
config/app.php

@@ -150,7 +150,7 @@ return [
         /*
         /*
          * Package Service Providers...
          * Package Service Providers...
          */
          */
-        Germey\Geetest\GeetestServiceProvider::class,  // Geetest Service
+        Misechow\Geetest\GeetestServiceProvider::class,  // Geetest Service
 
 
         /*
         /*
          * Application Service Providers...
          * Application Service Providers...
@@ -211,7 +211,7 @@ return [
         'Captcha'      => Mews\Captcha\Facades\Captcha::class,
         'Captcha'      => Mews\Captcha\Facades\Captcha::class,
         'Agent'        => Jenssegers\Agent\Facades\Agent::class,
         'Agent'        => Jenssegers\Agent\Facades\Agent::class,
         'Purifier'     => Mews\Purifier\Facades\Purifier::class,
         'Purifier'     => Mews\Purifier\Facades\Purifier::class,
-        'Geetest' => Germey\Geetest\Geetest::class,
+        'Geetest' => Misechow\Geetest\Geetest::class,
     ],
     ],
 
 
 ];
 ];

+ 15 - 6
config/geetest.php

@@ -11,7 +11,17 @@ return [
 	| Options: ['zh-cn', 'zh-tw', 'en', 'ja', 'ko']
 	| Options: ['zh-cn', 'zh-tw', 'en', 'ja', 'ko']
 	|
 	|
 	*/
 	*/
-	'lang' => 'zh-cn',
+    'lang' => 'zh-cn',
+    
+    /*
+	|--------------------------------------------------------------------------
+	| Config ServerGetKey
+	|--------------------------------------------------------------------------
+	|
+	| Here you can decision whether to get the geetest key from database or not.
+	|
+	*/
+	'serverGetKey' => TRUE,
 
 
 	/*
 	/*
 	|--------------------------------------------------------------------------
 	|--------------------------------------------------------------------------
@@ -21,8 +31,7 @@ return [
 	| Here you can config your yunpian api key from yunpian provided.
 	| Here you can config your yunpian api key from yunpian provided.
 	|
 	|
 	*/
 	*/
-    'id' => env('GEETEST_ID'),
-
+	'id' => env('GEETEST_ID'),
 
 
 	/*
 	/*
 	|--------------------------------------------------------------------------
 	|--------------------------------------------------------------------------
@@ -32,7 +41,7 @@ return [
 	| Here you can config your yunpian api key from yunpian provided.
 	| Here you can config your yunpian api key from yunpian provided.
 	|
 	|
 	*/
 	*/
-    'key' => env('GEETEST_KEY'),
+	'key' => env('GEETEST_KEY'),
 
 
 	/*
 	/*
 	|--------------------------------------------------------------------------
 	|--------------------------------------------------------------------------
@@ -66,7 +75,7 @@ return [
 	| Options: float, popup, custom, bind
 	| Options: float, popup, custom, bind
 	|
 	|
 	*/
 	*/
-	'product' => 'bind',
+	'product' => 'float',
 
 
 	/*
 	/*
 	|--------------------------------------------------------------------------
 	|--------------------------------------------------------------------------
@@ -86,7 +95,7 @@ return [
 	| Here you can config the alert text when it failed in server (two factor validation).
 	| Here you can config the alert text when it failed in server (two factor validation).
 	|
 	|
 	*/
 	*/
-	'server_fail_alert' => '验证码校验失败',
+	'server_fail_alert' => '验证码校验失败,请重新尝试',
 
 
 
 
 ];
 ];

+ 0 - 23
resources/views/vendor/geetest/geetest.blade.php

@@ -18,29 +18,6 @@
             captchaObj.onReady(function() {
             captchaObj.onReady(function() {
                 $("#wait-{{ $captchaid }}")[0].className = "hide";
                 $("#wait-{{ $captchaid }}")[0].className = "hide";
             })
             })
-            captchaObj.onSuccess(function() {
-                // 进行服务器端二次验证
-                var result = captchaObj.getValidate();
-                
-                $.ajax({
-                    url: "{{url('geetestVerify')}}",
-                    type: 'post',
-                    dataType: 'json',
-                    data: {
-                        geetest_challenge: result.geetest_challenge,
-                        geetest_validate: result.geetest_validate,
-                        geetest_seccode: result.geetest_seccode,
-                        _token: '{{csrf_token()}}',
-                    },
-                    success: function(res) {
-                        Msg(true);
-                    },
-                    error: function(err) {
-                        Msg(false, err.responseJSON.errors.geetest_challenge + ',请重新验证', 'error');
-                        captchaObj.reset();
-                    }
-                })
-            })
             if ('{{ $product }}' == 'popup') {
             if ('{{ $product }}' == 'popup') {
                 captchaObj.bindOn($('#{{ $captchaid }}').closest('form').find(':submit'));
                 captchaObj.bindOn($('#{{ $captchaid }}').closest('form').find(':submit'));
                 captchaObj.appendTo("#{{ $captchaid }}");
                 captchaObj.appendTo("#{{ $captchaid }}");

+ 0 - 1
routes/web.php

@@ -16,7 +16,6 @@ Route::group(['middleware' => ['isForbidden', 'affiliate']], function () {
     Route::get('makePasswd', 'Controller@makePasswd'); // 生成密码
     Route::get('makePasswd', 'Controller@makePasswd'); // 生成密码
     Route::get('makeVmessId', 'Controller@makeVmessId'); // 生成VmessId
     Route::get('makeVmessId', 'Controller@makeVmessId'); // 生成VmessId
     Route::get('makeSecurityCode', 'Controller@makeSecurityCode'); // 生成网站安全码
     Route::get('makeSecurityCode', 'Controller@makeSecurityCode'); // 生成网站安全码
-    Route::post('geetestVerify', 'CaptchaController@geetestPostValidate'); // Geetest 极验后端验证
 });
 });
 
 
 Route::group(['middleware' => ['isForbidden', 'isLogin', 'isAdmin']], function () {
 Route::group(['middleware' => ['isForbidden', 'isLogin', 'isAdmin']], function () {