laravel 5.6 登录验证码 captcha 引入

简介: 用户登陆注册, 不管前台后台, 如果掌握了手机短信和图形验证码, 那安全性会好很多, PHP上常见有两个captcha图形验证方式, gregwar/captcha和mews/captcha 参考下面的连接,用mews/captcha,感觉很方便。

用户登陆注册,

不管前台后台,

如果掌握了手机短信和图形验证码,

那安全性会好很多,

PHP上常见有两个captcha图形验证方式,

gregwar/captcha和mews/captcha

参考下面的连接,用mews/captcha,感觉很方便。


以下为不跟laravel的auth结合,自己验证码对比的写法。


if(!Captcha::check($data['captcha'])){ return back()->with('error','验证码错误'); }

8495f55c50a00ee08d4d9eb2d70d4d36fa90f4e5


参考URL


https://blog.csdn.net/u013372487/article/details/79461730


前提: 开启Laravel 的用户认证功能

1、安装 Captcha

安装 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 中进行配置了。这里使用默认配置。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2、使用 Captcha 为 auth 组件添加验证码功能

在登录视图中增加验证码的选项,可以加到密码和 remember me 之间

/resources/views/auth/login.blade.php
<div class="form-group">
  <label for="captcha" class="col-md-4 control-label">验证码</label>
      <div class="form-group">
          <div class="col-md-3">
              <input id="captcha"  class="form-control" type="captcha" name="captcha" value="{{ old('captcha')  }}" required>
              @if($errors->has('captcha'))
                  <div class="col-md-12">
                      <p class="text-danger text-left"><strong>{{$errors->first('captcha')}}</strong></p>
                  </div>
              @endif
          </div>
          <div class="col-md-4">
              <img src="{{captcha_src()}}" style="cursor: pointer" onclick="this.src='{{captcha_src()}}'+Math.random()">
          </div>
      </div>
  </div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

重写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' => '验证码错误',
    ]);
}
目录
相关文章
|
28天前
|
前端开发 JavaScript Java
springboot 集成easy-captcha实现图像验证码显示和登录
springboot 集成easy-captcha实现图像验证码显示和登录
135 0
|
4月前
|
Python
django auth模块使用jwt进行登录不能更新last_login!
今天使用django自带的用户系统,进行jwt,重写了user模型,使用手机登录,于是就想用django自带的登录验证... 哎,一切折腾都在于不熟悉
34 0
|
5月前
|
存储 中间件 API
fastadmin框架token验证
fastadmin框架token验证
95 0
|
9月前
|
PHP
PHP实现图片登录验证码的解决方案
PHP实现图片登录验证码的解决方案
75 0
|
10月前
|
JavaScript Java
springBoot和vue实现登录操作和JWT验证(1)
springBoot和vue实现登录操作和JWT验证
91 0
|
10月前
|
JavaScript Java
springBoot和vue实现登录操作和JWT验证(2)
springBoot和vue实现登录操作和JWT验证
85 0
Yii2.0框架中如何进行表单验证?有哪些内置的验证器?
Yii2.0框架中如何进行表单验证?有哪些内置的验证器?
|
Java
SpringBoot 发送邮箱验证码(HTML模板)
SpringBoot 发送邮箱验证码(HTML模板)
1862 0
SpringBoot 发送邮箱验证码(HTML模板)
|
关系型数据库 MySQL
Beego学习——Jwt实现用户登录注册
Beego学习——Jwt实现用户登录注册
141 0