Laravel5.5 實現圖片驗證碼的獲取以及驗證api接口

本人感受用的比較好的驗證碼包,拿出來分享一下,傻瓜式教程,大佬別噴。

用戶登錄註冊,無論前臺後臺,爲了安全性仍是須要加入手機短信或圖形驗證碼的,這樣安全性會好不少php

由於不一樣的需求,咱們能夠返回圖片、網址、HTML,根據前端需求來返回相應的數據html

首先要引入圖片驗證碼的composer包

github地址:github.com/mewebstudio…前端

安裝captcha:

composer require mews/captcha 
複製代碼

找到config/app.php下的providers,添加以下代碼git

\Mews\Captcha\CaptchaServiceProvider::class,
複製代碼

找到config/app.php下的aliases``,添加以下代碼github

'Captcha' => Mews\Captcha\Facades\Captcha::class,
複製代碼

引入配置文件,選擇相應的包web

php artisan vendor:publish
複製代碼

則生成config/captcha.php安全

配置文件中的代碼:例如長寬,flat配置等,我的以爲使用默認配置吧,也沒什麼問題。bash

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;
    });
複製代碼

本次項目用到的方法以下:

路由:get爲獲取圖片驗證碼,post爲驗證驗證碼是否正確app

Route::get('/captcha', 'AllController@captcha');
Route::post('/captcha/validate', 'AllController@captchaValidate');
複製代碼

控制器中的方法:獲取圖片驗證碼返回的是url,若是想返回img標籤或者html,請看上面的方法composer

public function captcha()
{
    $captcha['url'] = captcha_src();
    return $this->responseData($captcha);
}
複製代碼

前端把驗證碼傳過來進行驗證

public function captchaValidate(Request $request)
{
   $rules = ['captcha' => 'required|captcha'];
   $validator = \Validator::make($request->all(), $rules);
   if ($validator->fails()){
       return $this->responseFailed('驗證失敗');
   } else {
       return $this->responseSuccess('驗證成功');
   }
}
複製代碼

若是一直返回驗證失敗,則須要在app/Http/Kernel.php中的$middleware加入如下信息

\Illuminate\Session\Middleware\StartSession::class
複製代碼

配上接口文檔圖片:

image

獲取以下驗證碼 d6qfe

驗證驗證碼是否正確

image

純原創,全部做品都是經驗所得,但願能夠得到你們的支持。

相關文章
相關標籤/搜索