Laravel 使用 Captcha 登录验证码
“
安装captchacomposerrequiremews/captcha配置config/app.php]添加以下配置'providers'=>[//...Mews\Captcha\CaptchaServiceProvider::class,]'aliases
”
安装 Captcha
composer require mews/captcha
配置
在 config/app.php
添加以下配置
'providers' => [
// ...
Mews\Captcha\CaptchaServiceProvider::class,
]
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
生成自定义配置文件
php artisan vendor:publish
运行之后,就可以在 config/captcha.php
中进行配置了。
注:如果运行后提示输入框请参考这个教程[Laravel执行 php artisan vendor:publish 卡住问题解决方法]
使用 Captcha 为 auth 组件添加验证码功能
在登录视图中增加验证码的选项,可以加到密码和 remember me 之间
/resources/views/auth/login.blade.php
<div >
<label for="captcha" >验证码</label>
<div >
<div >
<input id="captcha" type="captcha" name="captcha" value="{{ old('captcha') }}" required>
@if($errors->has('captcha')) <div >
<p ><strong>{{$errors->first('captcha')}}</strong></p>
</div>
@endif </div>
<div >
<img src="{{captcha_src()}}" onclick="this.src='{{captcha_src()}}'+Math.random()">
</div>
</div>
</div>
重写 AuthController 登录验证方法,并自定义提示信息: 修改 App\Http\Controllers\Auth\LoginController
#首先要引入如下代码:use Illuminate\Http\Request;
# 重写 validateLogin 方法:
#在验证里面加入验证码的规则验证即可
/**
* DESC: 重写 AuthenticatesUsers 登录验证方法,并自定义提示信息;
* 原验证方法 Illuminate\Foundation\Auth\AuthenticatesUsers
* @param Request $request
*/
protected function validateLogin(Request $request){
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string'
'captcha' => 'required|captcha',
],[
'captcha.required' => '请填写验证码',
'captcha.captcha' => '验证码错误',
]);
}
完成后,刷新登录页面即可完成安装了
71