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

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

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

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

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

php think make:validate admin@SystemAdmin

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

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控制器文件中引用验证文件

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

在方法中使用验证方法

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

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

protected $message = ['account.require' => '用户名不能为空','account.alphaDash' => '用户名只能是字母、数字和下划线_及破折号-',
];
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL各种日志

感谢B站up主的视频分享 黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring依赖注入方式

第一章 Spring依赖注入方式【基于XML】 为属性赋值方式 通过xxxset()方法通过构造器反射 1.1 set注入 语法&#xff1a;<property> 1.2 构造器注入 语法&#xff1a;<constructor-arg> 1.3 p名称空间注入 导入名称空间&#xff1a;xmlns:p“http://www.springf…

2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用

文章目录 一、前言二、Amazon Aurora 无限数据库2.1 亚马逊云科技数据库产品发展历程2.2 什么是 Amazon Aurora Limitless Database&#xff08;无限数据库&#xff09;2.3 Amazon Aurora Limitless Database 设计架构2.4 Amazon Aurora Limitless Database 分片功能2.5 使用 A…

xtu oj 1194 Recipient

题目描述 快递小哥每天都辛苦的送快递&#xff0c;今天他需要送N份快递给N个收件人&#xff0c;第i份快递需要送给第i个收件人。 请问其中发生恰好K个送错了的情况数是多少&#xff1f; 输入 存在多样例。 每行输入两个整数N和K&#xff0c;1≤N≤1000,0≤K≤N。 如果两个都…

pytorch中的归一化:BatchNorm、LayerNorm 和 GroupNorm

1 归一化概述 训练深度神经网络是一项具有挑战性的任务。 多年来&#xff0c;研究人员提出了不同的方法来加速和稳定学习过程。 归一化是一种被证明在这方面非常有效的技术。 1.1 为什么要归一化 数据的归一化操作是数据处理的一项基础性工作&#xff0c;在一些实际问题中&am…

SpringBoot - 事件机制使用详解(ApplicationEvent、ApplicationListener)

SpringBoot - 事件机制使用详解&#xff08;ApplicationEvent、ApplicationListener&#xff09; Spring 事件机制使用观察者模式来传递事件和消息。我们可以使用 ApplicationEvent 类来发布事件&#xff0c;然后使用 ApplicationListener 接口来监听事件。当事件发生时&#…

程序员月经焦虑 :如何成为高级工程师

高级工程师意味着什么&#xff1f; ChatGPT的回复&#xff1a;高级工程师对编程语言、软件设计原则和开发方法有深刻的理解。 开发方法 开发方法学是旨在使团队有效的组织方法。这些对我们来说可能很无聊&#xff0c;但我们希望你在这方面有专业知识。 我已经对非敏捷开发方法…

SAHI强化YOLOv5在小目标上的表现

文章目录 环境前言安装sahiyolov5检测sahi添加新的检测模型 环境 ubuntu 18.04 64bitsahi 0.8.4yolov5 5.0pytorch 1.7.1cu101 前言 目标检测和实例分割是迄今为止计算机视觉中最重要的应用领域&#xff0c;各种目标检测网络层出不穷&#xff0c;然而&#xff0c;小目标的检…

速卖通(AliExpress)店铺流量怎么转化?自养号测评策略

随着全球电商的蓬勃发展&#xff0c;速卖通&#xff08;AliExpress&#xff09;作为中国领先的跨境电商平台&#xff0c;为卖家提供了一个广阔的销售舞台。然而&#xff0c;对于卖家来说&#xff0c;如何让速卖通店铺实现转化&#xff0c;吸引更多的买家成为关键。 一、速卖通…

Docker 与 Podman:揭示容器编排的最佳 25 大常见问题解答

让我们告诉你一件事。 这不仅仅是这两个强大平台之间的普通比较。 相反&#xff0c;我们分析并列出了有关 Docker 与 Podman 的最紧迫问题。 但这里有一件事——这些问题不仅被技术角度所包围。 我们还深入研究了业务环境&#xff0c;因为我们知道这不仅仅是关于代码。这是…

javaweb `jdbc.properties`文件编写

问题&#xff1a;查询数据库查不到&#xff0c;大概率是两者编码对应不上&#xff1f; 问题描述&#xff1a; 从数据库查询这一句&#xff0c;但数据库是有这个值的。 解决办法&#xff1a; 这是jdbc.properties里面写的内容 drivercom.mysql.jdbc.Driverurljdbc:mysql://12…

Kubectl Patch 的应用

报错 先前创建的crds不会删除。仍处于终止状态 [root@k8s-01 clickhouse-cluster]# kubectl apply -f sample05.yaml Error from server (MethodNotAllowed): error when creating "sample05.yaml": create not allowed while custom resource definition is term…

虚幻商城 蓝图汇总

文章目录 程序化Procedural Road Generator(程序化道路生成器)Procedural City Creator Tools(程序化城市创建者工具)战斗系统Basic Melee Combat System(基本近战战斗系统)Basic Multiplayer Melee Combat System(基本的多人近战战斗系统)Advanced Locomotion System …

【07】ES6:对象的扩展

一、对象字面量语法扩展 1、属性简写 当属性名称和属性值的变量名称相同时&#xff0c;可以省略冒号的变量名称。 const foo barconst baz { foo } // 等同于 const baz { foo: foo }baz // { foo: bar }function f(x, y) {return { x, y } } // 等同于 function f(x, y)…

js加密的原理

JavaScript加密的原理主要基于一种或多种加密算法&#xff0c;如AES&#xff08;Advanced Encryption Standard&#xff09;、RSA&#xff08;Rivest-Shamir-Adleman&#xff09;、SHA-256&#xff08;Secure Hash Algorithm 256&#xff09;等。这些算法将明文&#xff08;未加…

C#修饰符

C#修饰符 在C#中&#xff0c;修饰符主要的用途是表示当前类&#xff0c;函数&#xff0c;成员变量可以被访问的范围。 常见的有以下几种 Public&#xff1a;公共修饰符&#xff0c;表示该成员可以从任何地方访问。Private&#xff1a;私有修饰符&#xff0c;表示该成员只能从类…

jmeter简单压测kafka

前言 这也是一个笔记&#xff0c;就是计划用jmeter做性能测试&#xff0c;但是这里是只要将数据放到kafka的topic里&#xff0c;后面查看下游业务处理能力。 一、方案 因为只要实现数据放到kafka&#xff0c;参考了下博友的方案&#xff0c;可行。 二、方案验证 详细过程就不…

iptables详解

1、介绍 iptables 是一个在 Linux 系统上用于配置和管理防火墙规则的工具。它允许系统管理员定义数据包的过滤规则、网络地址转换&#xff08;NAT&#xff09;规则和数据包的网络地址和端口的转发规则。iptables 提供了非常灵活和强大的功能&#xff0c;可以用于保护网络安全、…

微服务实战系列之MQ

前言 从今天起&#xff0c;席卷北国的雪&#xff0c;持续了一整天&#xff0c;北京也不例外。这场意外的寒潮&#xff0c;把整个冬天渲染的格外cool。当然你可以在外面打雪仗、堆雪人、拉雪橇&#xff0c;也可以静坐屋内&#xff0c;来一场围炉煮茶的party。此刻&#xff0c;冬…

KUKA机器人如何隐藏程序或程序段?

KUKA机器人如何隐藏程序或程序段? 如下图所示,新建一个示例程序进行说明, 如下图所示,如果红框中的动作指令不想让别人看到,想隐藏起来,如何做到? 如下图所示,在想要隐藏的程序或程序段的前后,分别添加 ;fold 和 endfold指令(这里要注意是英文状态下的输入法), 如…