轉(zhuǎn)自王寶花 http://www.reibang.com/p/9dac08a5bb14
開始
注冊極簡帳號:http://account.geetest.com/
添加一個驗證萨脑,獲取一個ID和KEY赴恨。
Laravel部署
- 安裝一個Laravel的極簡驗證的集成包composer require
germey/geetest
- 注冊服務(wù)與設(shè)置別名(
config/app.php
)
于provider數(shù)組中添加服務(wù)
Germey\Geetest\GeetestServiceProvider::class
,
于aliases數(shù)組中添加孽糖,
'Geetest' => Germey\Geetest\Geetest::class,
- 配置ID和KEY
可以在.env中配置懂衩,也可以在config/geetest.php中配置脯倒。筆者是在.env
中添加了兩行信息撮躁,如下:
GEETEST_ID=獲取的ID
GEETEST_KEY=獲取的KEY
- 密鑰的生成
地址驗證碼的生成步驟:當加載登陸頁面時漱病,會自執(zhí)行ajax請求一個后臺的地址,會在后臺生成一個密鑰把曼,返回給前臺杨帽,前臺會依據(jù)此密鑰再去請求Geetest
的一個接口,依據(jù)Geetest
返回的信息生成驗證碼嗤军。這個后臺的地址默認為/auth/geetest
注盈;所以你需要在Auth控制器中進行相應(yīng)的配置。
# AuthController.phpuse Germey\Geetest\CaptchaGeetest;
class AuthController extends Controller
{
use CaptchaGeetest;
......
}
有人可能納悶使用的CaptchaGeetest.php
文件到底是什么叙赚?它其實就是一個可以繼承的一個方法老客,trait
大大提高了代碼的重用性僚饭,他可以放在任何類中。如下所示胧砰。
# CaptchaGeetest.php
<?php
namespace Germey\Geetest;
trait CaptchaGeetest
{
/**
* Get geetest.
*/
public function getGeetest() {
$user_id = "test";
$status = Geetest::preProcess($user_id);
session()->put('gtserver', $status);
session()->put('user_id',$user_id);
echo Geetest::getResponseStr();
}
}
請求地址/auth/geetest
可以在config/geetest.php
進行查看和修改鳍鸵。
- 路由設(shè)置
默認請求地址為/auth/geetest,那么我們的路由就這樣設(shè)置尉间。
Route::get('auth/geetest','Auth\AuthController@getGeetest');
當然偿乖,我們也可以進行更改默認的訪問地址和默認使用的控制器。
- 后臺的復核驗證
這個驗證碼的驗證會在前臺進行自動驗證哲嘲,這個無需管贪薪。但為了更安全,我們可以在后臺進行二次驗證眠副。筆者重新建立一個控制器画切,用于做驗證。
# 前臺模板
<div class="content">
<h1>極簡后端測試</h1>
<form action="/login" method="post">
<input name="_token" type="hidden" value="{{ csrf_token() }}">
帳號:<input type="text" name="name"><br><br>
密碼:<input type="password" name="password"><br><br>
{!! Geetest::render('embed') !!} <br><br>
<input type="submit" value="submit">
</form>
</div>
# LoginController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;use App\Http\Requests;
use Illuminate\Support\Facades\Config;
class LoginController extends Controller {
public function index(Request $request) {
$result = $this->validate( $request, ['geetest_challenge' => 'geetest'], ['geetest' => Config::get('geetest.server_fail_alert')] );
if ($request) {
return 'success';
}
}
}
利用 validate 方法侦啸,通過驗證其中一個字段 geetest_challenge, 驗證規(guī)則 geetest 就可以完成服務(wù)端的驗證槽唾。這樣就更保證了安全性。
在這里注意光涂,由于多提交了幾個字段庞萍,如果想執(zhí)行 ORM 的批量插入修改操作時,記得在 Model 里面屏蔽這幾個字段
protected $guarded = ['geetest_challenge', 'geetest_validate', 'geetest_seccode'];
當然忘闻,還包含多種驗證钝计,筆者沒再一一測試,如果想要更多學習齐佳,可以參考官方文檔私恬。
原文鏈接:http://www.reibang.com/p/9dac08a5bb14著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)炼吴,并標注“簡書作者”本鸣。
2041409-033eb60749641160.png