【TP5.1】验证码校验 ---验证器使用

简介: 【TP5.1】验证码校验 ---验证器使用

实现步骤:


在data创建一个Uservaildate的验证类


写验证规则


在登录时对验证类的调用,然后校验


$userVaildata->check(Request::param())这个方法是获取用户输入的信息

$userVaildata->getError()这个方法是返回验证错误信息



首先创建验证器类

image.png

源码:

<?php
namespace data\validate;
use think\Validate;
/**
 * 对用户输入登录数据进行验证
 */
class UserValidate extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */ 
  protected $rule = [
      'vertify' => 'require|captcha'
    ];
    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */ 
    protected $message = [
        'vertify' => [
            'require' => '验证码必须有',
            'captcha' =>'验证码错误'
        ]
    ];
}

屏幕快照 2022-05-12 上午10.28.26.png

<?php
namespace app\admin\controller;
use think\Controller;
use data\model\user\User;
use data\service\UserService;
use Request;
use Db,Log;
use think\captcha\Captcha;
use data\Validate\UserValidate;
class Login extends Controller
{   
    // 定义逻辑层UserService
    private $userService;
    /**
     * 初始化
     */
    public function initialize()
    {
        $this->userService = new UserService;
    }
    /**
     * 登录
     * @return \think\Response
     */
    public function login()
    {
        if(Request::isPost()){
            $username = Request::param('username');
            $password = Request::param('password');
            $userVaildata = new UserValidate;
            // 对验证类进行验证
            if(!$userVaildata->check(Request::param())){
                return json([
                    'code' => USER_LOGIN_VALIDATE_ERROR,
                    //$userVaildata->getError()可以获取到具体的错误信息
                    'msg' => $userVaildata->getError()
                ]);
            }
            return ajaxRuturn($this->userService->login($username,$password));
        }
        return $this->fetch();
    }
    /**
     * 验证码验证
     */
    public function verify()
    {
        $config =    [
            // 验证码字体大小
            'fontSize'    =>    30,
            // 验证码位数
            'length'      =>    3,
            // 关闭验证码杂点
            'useNoise'    =>    false,
        ];
        $captcha = new Captcha($config);
        return $captcha->entry();
    }
}
相关文章
|
4月前
|
SQL 测试技术 数据安全/隐私保护
密码组件校验规则该如何测试?
密码组件校验规则该如何测试?
CRC16_CCITT_FALSE校验代码 及 验证
CRC16_CCITT_FALSE校验代码 及 验证
|
安全 UED
行为验证码验证类型的讲解
最近在开发行为验证码,经常触及到关于验证类型的相关内容。但使用起来不太熟练,闲暇之余,总结一下我对行为验证码验证类型的理解。
行为验证码验证类型的讲解
|
PHP
TP5验证规则自定义
TP5验证规则自定义
146 0
083.验证歌德巴赫猜想
083.验证歌德巴赫猜想
62 0
|
JavaScript Java
实现登录时进行校验验证码的功能
JavaEE中,实现登录时进行校验验证码的功能(图文并茂!!!)
实现登录时进行校验验证码的功能
|
中间件
【TP5.1】验证码第一次校验失败 规避重复请求
【TP5.1】验证码第一次校验失败 规避重复请求
179 0
【TP5.1】验证码第一次校验失败 规避重复请求
TP5.1对登录的返回码优化
TP5.1对登录的返回码优化
113 0
TP5.1对登录的返回码优化
|
中间件
【TP5.1】做了权限后,验证码不出来的问题
【TP5.1】做了权限后,验证码不出来的问题
72 0
【TP5.1】做了权限后,验证码不出来的问题