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