第一步 引入captcha依赖包
composer require gregwar/captcha
第二步 创建控制器方法
<?php
namespace App\Http\Controllers\Admin;
use Gregwar\Captcha\CaptchaBuilder;
use Illuminate\Http\Request;
use Session;
class AuthorityController extends Controller
{
//生成验证码
public function getCaptcha() {
//生成验证码图片的Builder对象,配置相应属性
$builder = new CaptchaBuilder;
//可以设置图片宽高及字体
$builder->build($width = 86, $height = 33, $font = null);
//获取验证码的内容
$phrase = $builder->getPhrase();
//把内容存入session
Session::flash('milkcaptcha', $phrase);
//生成图片
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: image/jpeg');
$builder->output();
}
//验证注册码的正确与否
public function postLogin(Request $request)
{
//控制面板路径
$redirectTo = site_path('dashboard', 'admin');
//认证凭证
$credentials = [
'username' => $request->input('username'),
'password' => $request->input('password'),
'is_locked' => 0,
];
$userInput = $request->input('code');
if(Session::get('milkcaptcha') == $userInput){
if (Auth::attempt($credentials, $request->has('remember'))) {
event(new UserLogin(auth()->user())); //触发登录事件
return redirect()->intended($redirectTo);
} else {
// 登录失败,跳回
return redirect()->back()
->withInput()
->withErrors(['attempt' => '“用户名”、“密码”错误,请重新登录!']); //回传错误信息
}
}else{
return redirect()->back()
->withInput()
->withErrors(['attempt' => '“验证码”错误,请重新输入!']); //回传错误信息
}
}
}
第三步 前台调用
<div class="row">
<div class="col-xs-8">
<input type="text" name="code" style="width:100%;border:1px solid #d2d6de;height:34px;padding:6px 12px;fontsize:14px;" placeholder="验证码">
</div>
<div class="col-xs-4">
<img id="img" src="{{ _route('admin:auth.captcha') }}" style="width:100%;height:33px;"/>
</div>
</div>
js点击刷新验证码
<script>
$('#img').click(function(){
var url = "{{ _route('admin:auth.captcha') }}?"+Math.floor(Math.random()*100);
$(this).attr('src',url);
})
});
</script>