账号登录


上一篇 : 账号注册 下一篇: 基础控制器的修改



/**
* 用户登录
* @return array
*/
public function login(){
   $validate = new Validate([
       'mobile' => 'require',
       'code'=>'require',
       'user_pass'=>'require',
   ]);

   $validate->message([
       'mobile.require' => '请输入手机号!',
       'code.require' => '验证码不能为空!',
       'user_pass.require' => '请填密码!',
   ]);

   $data = $this->request->param();
   if (!$validate->check($data)) {
       $this->error($validate->getError());
   }

   $userModel = new User();
   if (preg_match('/(^(13\d|15[^4\D]|17[13678]|18\d)\d{8}|170[^346\D]\d{7})$/', $data['mobile'])) {
       $userModel->where('mobile', $data['mobile']);
   } else {
       return $this->apiErrorReturn('请输入正确的手机号!');
   }

   $findUser = $userModel->find();

   if(empty($findUser)){
       return $this->apiErrorReturn('账号不存在');
   }else{
       if($findUser['status'] == 2){
           return $this->apiErrorReturn('您的账号已被拉黑!');
       }

       if(!compare_password($data['user_pass'],$findUser['user_pass'])){
           return $this->apiErrorReturn('密码不正确!');
       }

   }

   //记录token
   $token = generateToken();
   $expire_time = date('Y-m-d H:i:s', time() + 3600*24*180 );
   $userToken = UserToken::get(['user_id'=>$findUser['id']]);

   if(empty($userToken)){

       $userTokenModel = new UserToken();

       //第一次登陆
       $userTokenModel->user_id = $findUser['id'];
       $userTokenModel->token = $token;
       $userTokenModel->expire_time = $expire_time;
       $userTokenModel->allowField(true)->isUpdate(false)->save();

   }else{
       //再次登录
       $userToken->token = $token;
       $userToken->expire_time = $expire_time;
       $userToken->allowField(true)->isUpdate(true)->save();

   }

   return $this->apiSuccessReturn('登录成功',[
       'token'=>$token
   ]);
   
}


返回结果


{

    "code": 200,

    "msg": "登录成功",

    "data": {

        "token": "8d27606f99facfcefdda74e0d83fa6be8d27606f99facfcefdda74e0d83fa6be"

    }

}



新建公共函数 


/**
* 比较密码
* @param $password
* @param $passwordInDb
* @return bool
*/
function compare_password($password, $passwordInDb){
   if (strpos($passwordInDb, "###") === 0) {
       return up61_pass($password) == $passwordInDb;
   }
   return false;
}

/**
* 生成token
* @return string
*/
function generateToken(){
   return md5(uniqid()) . md5(uniqid());
}

新建userToken模型类


<?php
/**
* Created by PhpStorm.
* User: [一秋]
* Date: 2018/3/28
* Time: 18:03
* Desc: 成功源于点滴
*/

namespace app\index\model;

use think\Model;

class UserToken extends Model
{
   protected $autoWriteTimestamp = 'datetime';
   protected $updateTime = false;

}


上一篇 : 账号注册 下一篇: 基础控制器的修改