Laravel8.5新增驗證碼 mews/captcha

Denly發表於2021-12-30

1、通過composer安裝驗證碼包

在Composer裡執行以下命令

composer require mews/captcha

2、配置

在 config/app.php 中 找到 aliases陣列加入以下程式碼

'Captcha' => Mews\Captcha\CaptchaServiceProvider::class,

3、生成配置檔案

在Composer裡執行以下命令,如果彈出選項,選擇到config,我的config的tag是11,輸入11後回車,然後就會在config資料夾裡生成配置檔案;配置檔案裡的length是生成驗證碼多少位;

 php artisan vendor:publish

4、前端使用驗證碼

在需要的地方加入

<img src="{{captcha_src()}}">

如果是用的vue.js。可以這樣

/*html部分*/
<img class="codeImg" :src="urlCode" style="cursor: pointer" @click="getCode">

/*js部分*/
<script>
new Vue({
    el: '.main',
    data: {
        urlCode:"",
    },
    created(){
        this.getCode();
    },
    methods: {
        getCode(){
            let domain = document.domain;
            $.get('http://'+domain+'/getCode',(res)=>{
                this.urlCode =res.code;
            })
        },
        goLogin(){
            document.onkeyup = (event) => {
                let e = event || window.event;
                if(e && e.keyCode==13){
                    //執行登入
                }
            };
        },
    }
})
</script>

5、控制器生成驗證碼

public function codes()
    {
        return response()->json([
            'code' => \captcha_src() //返回前端影像驗證碼
        ]);
    }

6、驗證碼驗證

if(!captcha_check($params['code'])){
   return Response()->json(['code' => 201, 'msg' => '驗證碼有誤']);
  }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章