本人感覺(jué)用的比較好的驗(yàn)證碼包驼卖,拿出來(lái)分享一下齿梁,傻瓜式教程逞泄,大佬別噴。
用戶(hù)登陸注冊(cè)溯香,不管前臺(tái)后臺(tái),為了安全性還是需要加入手機(jī)短信或圖形驗(yàn)證碼的浓恶,這樣安全性會(huì)好很多
因?yàn)椴煌男枨竺堤常覀兛梢苑祷貓D片、網(wǎng)址包晰、HTML湿镀,根據(jù)前端需求來(lái)返回相應(yīng)的數(shù)據(jù)
首先要引入圖片驗(yàn)證碼的composer包
github地址:https://github.com/mewebstudio/captcha
安裝captcha:
composer require mews/captcha
找到config/app.php下的providers,添加如下代碼
\Mews\Captcha\CaptchaServiceProvider::class,
找到config/app.php下的aliases``伐憾,添加如下代碼
'Captcha' => Mews\Captcha\Facades\Captcha::class,
引入配置文件勉痴,選擇相應(yīng)的包
php artisan vendor:publish
則生成config/captcha.php
配置文件中的代碼:例如長(zhǎng)寬,flat配置等树肃,個(gè)人覺(jué)得使用默認(rèn)配置吧蒸矛,也沒(méi)什么問(wèn)題。
Return URL
captcha_src();
Captcha::src();
Return HTML
captcha_img();
Captcha::img();
To use different configurations
captcha_img('flat');
Captcha::img('inverse');
大家可以參考demo(demo為composer包自帶的)
Route::any('captcha-test', function()
{
if (Request::getMethod() == 'POST')
{
$rules = ['captcha' => 'required|captcha'];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
echo '<p style="color: #ff0000;">Incorrect!</p>';
}
else
{
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}
$form = '<form method="post" action="captcha-test">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><input type="text" name="captcha"></p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});
本次項(xiàng)目用到的方法如下:
路由:get為獲取圖片驗(yàn)證碼胸嘴,post為驗(yàn)證驗(yàn)證碼是否正確
Route::get('/captcha', 'AllController@captcha');
Route::post('/captcha/validate', 'AllController@captchaValidate');
控制器中的方法:獲取圖片驗(yàn)證碼返回的是url雏掠,如果想返回img標(biāo)簽或者h(yuǎn)tml,請(qǐng)看上面的方法
public function captcha()
{
$captcha['url'] = captcha_src();
return $this->responseData($captcha);
}
前端把驗(yàn)證碼傳過(guò)來(lái)進(jìn)行驗(yàn)證
public function captchaValidate(Request $request)
{
$rules = ['captcha' => 'required|captcha'];
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()){
return $this->responseFailed('驗(yàn)證失敗');
} else {
return $this->responseSuccess('驗(yàn)證成功');
}
}
如果一直返回驗(yàn)證失敗劣像,則需要在app/Http/Kernel.php中的$middleware加入以下信息
\Illuminate\Session\Middleware\StartSession::class
配上接口文檔圖片:
image
獲取如下驗(yàn)證碼
d6qfe
驗(yàn)證驗(yàn)證碼是否正確
image