Browse Source

替换验证类

master
wanghongjun 3 years ago
parent
commit
b4add0cf66
  1. 18
      app/controller/Passport.php
  2. 1
      app/model/User.php
  3. 66
      app/validate/Passport.php
  4. 10
      app/validate/User.php
  5. 1
      route/app.php

18
app/controller/Passport.php

@ -8,7 +8,7 @@ use app\model\AdminUser;
use app\model\AgentUser; use app\model\AgentUser;
use app\model\Pincode; use app\model\Pincode;
use app\model\User as UserModel; use app\model\User as UserModel;
use app\validate\User as UserValidate; use app\validate\Passport as PassportValidate;
use think\exception\ValidateException; use think\exception\ValidateException;
use think\facade\Cookie; use think\facade\Cookie;
use think\facade\Request; use think\facade\Request;
@ -28,7 +28,7 @@ class Passport extends BaseController
try { try {
// 验证用户输入 // 验证用户输入
validate(UserValidate::class)->scene('register')->check($data); validate(PassportValidate::class)->scene('register')->check($data);
// 验证手机号短信验证码 // 验证手机号短信验证码
$userModel = new UserModel(); $userModel = new UserModel();
@ -41,7 +41,7 @@ class Passport extends BaseController
return $this->renderError('邀请码无效'); return $this->renderError('邀请码无效');
} }
$checkCodeRes = validate(UserValidate::class)->checkCode($phone,$smsCode); $checkCodeRes = validate(PassportValidate::class)->checkCode($phone,$smsCode);
if ($checkCodeRes !== true) { if ($checkCodeRes !== true) {
return $this->renderError($checkCodeRes); return $this->renderError($checkCodeRes);
} }
@ -76,7 +76,7 @@ class Passport extends BaseController
try { try {
$cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; $cookie_name = 'login_count'.$_SERVER['HTTP_HOST'];
// 验证用户输入 // 验证用户输入
validate(UserValidate::class)->scene('login')->check($data); validate(PassportValidate::class)->scene('login')->check($data);
# 验证码验证 # 验证码验证
if ($count = Cookie::get($cookie_name) ?: 0) { if ($count = Cookie::get($cookie_name) ?: 0) {
@ -123,7 +123,7 @@ class Passport extends BaseController
$cookie_name = 'send_code'.$_SERVER['HTTP_HOST']; $cookie_name = 'send_code'.$_SERVER['HTTP_HOST'];
$send_time = 60; $send_time = 60;
validate(UserValidate::class)->scene('sendCode')->check($data); validate(PassportValidate::class)->scene('sendCode')->check($data);
# 限制短信验证码60发送一次 # 限制短信验证码60发送一次
if ($time = Cookie::get($cookie_name)) { if ($time = Cookie::get($cookie_name)) {
$s = time() - $time; $s = time() - $time;
@ -182,13 +182,13 @@ class Passport extends BaseController
try { try {
// 验证用户输入 // 验证用户输入
validate(UserValidate::class)->scene('retrieve')->check($data); validate(PassportValidate::class)->scene('retrieve')->check($data);
$userModel = new UserModel(); $userModel = new UserModel();
$phone = $data['phone']; $phone = $data['phone'];
$smsCode = $data['sms_code']; $smsCode = $data['sms_code'];
$checkCodeRes = validate(UserValidate::class)->checkCode($phone,$smsCode); $checkCodeRes = validate(PassportValidate::class)->checkCode($phone,$smsCode);
if ($checkCodeRes !== true) { if ($checkCodeRes !== true) {
return $this->renderError($checkCodeRes); return $this->renderError($checkCodeRes);
} }
@ -222,7 +222,7 @@ class Passport extends BaseController
$cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; $cookie_name = 'login_count'.$_SERVER['HTTP_HOST'];
// 验证用户输入 // 验证用户输入
validate(UserValidate::class)->scene('adminLogin')->check($data); validate(PassportValidate::class)->scene('adminLogin')->check($data);
# 验证码验证 # 验证码验证
if ($count = Cookie::get($cookie_name) ?: 0) { if ($count = Cookie::get($cookie_name) ?: 0) {
@ -272,7 +272,7 @@ class Passport extends BaseController
$cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; $cookie_name = 'login_count'.$_SERVER['HTTP_HOST'];
// 验证用户输入 // 验证用户输入
validate(UserValidate::class)->scene('agentLogin')->check($data); validate(PassportValidate::class)->scene('agentLogin')->check($data);
# 验证码验证 # 验证码验证
if ($count = Cookie::get($cookie_name) ?: 0) { if ($count = Cookie::get($cookie_name) ?: 0) {

1
app/model/User.php

@ -53,6 +53,7 @@ class User extends Model
$user = $this->where('phone', $data['phone'])->field('id,avatar,phone,password,salt')->find(); $user = $this->where('phone', $data['phone'])->field('id,avatar,phone,password,salt')->find();
if ($user) { if ($user) {
if ($user['status'] != 1) return ['status' => false, 'msg' => '用户已被停用'];
// 使用相同的盐值对输入密码进行哈希验证 // 使用相同的盐值对输入密码进行哈希验证
$hashedPassword = $this->generateHashedPassword($data['password'], $user->salt); $hashedPassword = $this->generateHashedPassword($data['password'], $user->salt);

66
app/validate/Passport.php

@ -0,0 +1,66 @@
<?php
declare (strict_types = 1);
namespace app\validate;
use think\facade\Db;
use think\Validate;
class Passport extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'phone|手机号' => 'require|mobile',
'password|密码' => 'require|min:6|max:20',
'sms_code|短信验证码' => 'require',
'account_number|账号' => 'require|min:4|max:16',
'user_id|用户id' => 'require|number'
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [];
protected $scene = [
'login' => ['phone','password'],
'register' => ['phone','password','sms_code'],
'retrieve' => ['phone','password','sms_code'],
'modifyPassword' => ['password'],
'sendCode' => ['phone'],
'adminLogin' => ['account_number','password'],
'agentLogin' => ['phone','password'],
];
/**
* 手机号短信验证
* @param $mobile
* @param $code
* @return bool|string
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function checkCode($mobile,$code)
{
$pin_info = Db::name('pincode')->where('mobile',$mobile)->field('code,time')->find();
if (empty($pin_info)) {
return '短信验证码错误';
}
if ($pin_info['time'] < time() - 300) {
return '短信验证码已过期,请重新获取';
}
if ($code != $pin_info['code']) {
return '短信验证码错误';
}
return true;
}
}

10
app/validate/User.php

@ -15,10 +15,7 @@ class User extends Validate
* @var array * @var array
*/ */
protected $rule = [ protected $rule = [
'phone|手机号' => 'require|mobile',
'password|密码' => 'require|min:6|max:20', 'password|密码' => 'require|min:6|max:20',
'sms_code|短信验证码' => 'require',
'account_number|账号' => 'require|min:4|max:16',
'user_id|用户id' => 'require|number' 'user_id|用户id' => 'require|number'
]; ];
@ -31,14 +28,9 @@ class User extends Validate
protected $message = []; protected $message = [];
protected $scene = [ protected $scene = [
'login' => ['phone','password'],
'register' => ['phone','password','sms_code'],
'retrieve' => ['phone','password','sms_code'],
'modifyPassword' => ['password'], 'modifyPassword' => ['password'],
'sendCode' => ['phone'],
'adminLogin' => ['account_number','password'],
'agentLogin' => ['phone','password'],
'editUser' => ['user_id','password'], 'editUser' => ['user_id','password'],
'delUser' => ['user_id'],
]; ];
/** /**

1
route/app.php

@ -36,6 +36,7 @@ Route::group('user',function (){
Route::post('rechargeRecords','user/rechargeRecords')->middleware(CheckUser::class)->allowCrossDomain(); Route::post('rechargeRecords','user/rechargeRecords')->middleware(CheckUser::class)->allowCrossDomain();
Route::post('consumptionRecords','user/consumptionRecords')->middleware(CheckUser::class)->allowCrossDomain(); Route::post('consumptionRecords','user/consumptionRecords')->middleware(CheckUser::class)->allowCrossDomain();
Route::post('awardsRecords','user/awardsRecords')->middleware(CheckUser::class)->allowCrossDomain(); Route::post('awardsRecords','user/awardsRecords')->middleware(CheckUser::class)->allowCrossDomain();
Route::post('userInfo','user/userInfo')->middleware(CheckUser::class)->allowCrossDomain();
}); });
Route::group('zone',function(){ Route::group('zone',function(){

Loading…
Cancel
Save