《使用ThinkPHP6开发项目》 - 登录接口三【表单验证】

《使用ThinkPHP6开发项目》 - 登录接口一-CSDN博客

https://blog.csdn.net/centaury32/article/details/134974860

在设置用户登录时,由于安全问题会对登录密码进行加密

表单验证这里也可以使用ThinkPHP6自带的验证规则,创建一个验证管理员的文件

php 复制代码
php think make:validate admin@SystemAdmin

在文件中写入我们要验证的字段

php 复制代码
app\admin\validate\SystemAdmin.php
<?php
declare (strict_types = 1);

namespace app\admin\validate;

use think\Validate;

class SystemAdmin extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'account' => 'require|alphaDash',
        'password' => 'require|alphaDash'
    ];

    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [];
}

在Passport.php控制器文件中引用验证文件

php 复制代码
use think\exception\ValidateException; 
use app\admin\validate\SystemAdmin as SystemAdminValidate;

在方法中使用验证方法

php 复制代码
try{
    validate(SystemAdminValidate::class)->check($param); // 验证表单数据 #$param表单数据
    ......
}catch(ValidateException $e){
    return json(['status'=>500, 'msg'=>$e->getError()]); // 验证不通过返回提示信息,返回格式可根据自己的代码进行调整
}
php 复制代码
<?php
declare (strict_types = 1);

namespace app\admin\controller;

use think\exception\ValidateException;
use app\admin\validate\SystemAdmin as SystemAdminValidate;
use app\admin\service\SystemAdmin as SystemAdminService;

class Passport extends SystemAdminService
{
    //登录
    public function login()
    {
        $param = request()->param();
        try{
            validate(SystemAdminValidate::class)->check($param);
            $result = self::AdminLogin($param);
            return json($result);
        }catch(ValidateException $e){
            return json(['status'=>500, 'msg'=>$e->getError()]);
        }
    }
}

验证的提示信息也可以自定义

php 复制代码
protected $message = [
    'account.require' => '用户名不能为空',
    'account.alphaDash' => '用户名只能是字母、数字和下划线_及破折号-',
];
php 复制代码
app\admin\validate\SystemAdmin.php
<?php
declare (strict_types = 1);

namespace app\admin\validate;

use think\Validate;

class SystemAdmin extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'account' => 'require|alphaDash',
        'password' => 'require|alphaDash'
    ];

    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [
        'account.require' => '用户名不能为空',
        'account.alphaDash' => '用户名只能是字母、数字和下划线_及破折号-',
    ];
}

这样验证的提示信息就变成了自定义的信息

这样,登录表单的验证就完成了

由于有些接口需要登录凭证,所以在登录成功后需要返回登录令牌Token

相关推荐
toooooop82 天前
CRMEB 故障排查笔记:安全网关只放行 GET/POST 怎么办
前端·javascript·vue.js·thinkphp6·crmeb
李纲明5 天前
WordPress 登录后跳回登录页或提示「Cookie 被阻止」:先核站点 URL 与 HTTPS 一致,再查安全插件与 CDN
https·登录·cdn·wordpress·cookie·devdiy·站点url
李纲明6 天前
WordPress 登录后跳回登录页或一直转圈:先核 Cookie、站点 URL 与 HTTPS,再查 CDN 与安全插件
登录·cdn·wordpress·cookie·devdiy·安全插件
青柠之夏cc1 个月前
PHP判断登录状态实战指南
登录·操作·找回
2601_962298932 个月前
SvelteKit Superforms 中处理非表单验证错误的实践指南
最佳实践·表单验证·错误处理·sveltekit·superforms
进哥AI研习社2 个月前
表单交互与验证——复杂表单的工程化实现
表单验证·受控组件·错误提示·zod·react hook form·可访问性·提交优化
杨云龙UP2 个月前
Linux 下 MySQL 常用登录方式及 Socket 排查指南
linux·运维·数据库·mysql·登录·xtrabackup·主从复制
孔明click332 个月前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·sa-token·开源·springboot·登录·权限·权限认证
大毛无人机3 个月前
无人机服务服务商筛选 SOP
无人机·流程·验证·sop·2026无人机接单平台哪
豆瓣鸡3 个月前
OAuth2 授权机制详解
登录·第三方授权