《使用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

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;吸引更多的买家成为关键。 一、速卖通…

javaweb `jdbc.properties`文件编写

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

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指令(这里要注意是英文状态下的输入法), 如…

安卓跳转页面闪屏,方法里需要传View 参数

/*** 跳转到首页的公共方法* */public void ToIndexpage(View v){//设置跳转的页面Intent intent new Intent(this, MainActivity.class);//实行跳转startActivity(intent);}

JS基础之闭包

JS基础之闭包 闭包闭包的目的闭包的优缺点 闭包 官方定义&#xff1a; 闭包是能够访问到自由变量的函数。 自由变量&#xff1a;能够在函数中使用&#xff0c;但是不是函数的参数&#xff0c;也不是内部的局部变量。 示例&#xff1a; var a 1; function foo(){console.log(a…

【Jmeter】Jmeter基础5-Jmeter元件介绍之线程(用户)

2.5.1、线程组 一个线程组即一个虚拟用户组&#xff0c;线程组中的每个线程即为1个虚拟用户&#xff0c;每个线程互相隔离&#xff0c;互不影响参数说明&#xff1a; 在取样器错误后要执行的动作 继续&#xff1a;忽略错误&#xff0c;继续执行启动下一进程循环&#xff1a; 终…

解决:ModuleNotFoundError: No module named ‘docx‘

解决&#xff1a;ModuleNotFoundError: No module named ‘docx’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named docx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时&#xff0c;报错&#xff1a; Trace…

LainChain 原理解析:结合 RAG 技术提升大型语言模型能力

摘要&#xff1a;本文将详细介绍 LainChain 的工作原理&#xff0c;以及如何通过结合 RAG&#xff08;Retrieval-Aggregated Generation&#xff09;技术来增强大型语言模型&#xff08;如 GPT 和 ChatGPT 等&#xff09;的性能。我们将探讨 COT、TOT、RAG 以及 LangChain 的概…

_try_finally原理探究后续

入口程序的最后一道防线 这里调用mainCRTStartup()&#xff0c;然后调用入口程序 相当于这里才是一个进程开始执行的地方 这里有一个call调用&#xff0c;跟进去看看 发现有修改fs:[0]的操作&#xff0c;这里就相当于编译器为我们注册了一个异常处理函数 这里到kernel32.dll里面…

jsp 学科竞赛成绩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 学科竞赛成绩管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…