????????书接上文在用token+用户名方式判断用户是否登录之后,接下来就是对用户登录后返回的数据进行?处理。
一、登录成功后返回用户信息
新建模型取名User
/**
* 更新用户信息
* @param $id
* @param $data
* @return bool
*/
public function UserUpdate($username,$data)
{
//判断username、data是否为空以及data数据是否为数组
if(empty($username) || empty($data) !is_arry($data)){
return false'
}
$where = [
'username' => $username,
]
//这里可以用return直接返回我这里是定义变量
$result = $this->where($where)->save($data);
return $result;
}
/**
* 获取用户id,在登录后需要使用
* @param $id
* @param $username
* @return User|array|false|Model|null
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function getByUserId($id,$username){
$id = intval($id);
if (empty($id) || empty($username))
{
return false;
}
$where = [
"username" => $username,
"id" => $id
];
$getid = $this->where($where)->find($id);
return $getid;
}
2.登录成功后返回数据
app\admin\controller\User.php
<?php
/**
*Created by giveLive
*user:lingm
*Date:2021/10/12
*timer:下午 11:44
*Atom:现在的努力是为了小时候吹过的NB
**/
namespace app\admin\controller;
use app\admin\business\Time;
use app\admin\controller\Token;
use app\BaseController;
use app\model\mysql\User AS UserInfo;
class User extends Authbasecontroller
{
public function index(){
$resObj = new Token($this->app);
//获取当前用户信息
$res =$resObj->getUserById($this->userId);
//如果res中不存在该id则返回用户不存在
if (!$res){
return show(config("code.status.error"),"用户不存在");
}
//获取存储在redis中的用户信息
$result =cache(config("jwt.login_user").$this->userId);
//如果redis中的数据不存在那么就返回登录失败
if (empty($result)){
return show(config("code.status.error"),"登录失败");
}
$results = [
'id' => $result['id'],
'username'=> $result['username'],
'sex' => $result['sex'],
];
return show(config("code.status.success"),"登陆成功",$results);
}
}
//跟新用户信息
public function infouser()
{
$username = $this->request->param("username","");
$sex = $this->request->param("sex","");
if (empty($username) || empty($sex)){
return show(config("code.status.error"),"用户名或性别不能为空");
}
$userinfoObj = new UserInfo();
$userinfoData=[
'username' => $username,
'sex' => $sex,
'create_time' => time(),
'login_ip' => request()->ip(),
'login_time' => time(),
'update_time' => time(),
];
$token = $this->request->header('access-token');
$user = $userinfoObj->updateUser($username,$userinfoData);
if (empty($user)){
return show(config("code.status.error"),"更新失败");
}
$result=[
'id' => $this->userId,
'username'=> $username,
'sex' => $sex,
'access_token' => $token,
];
return show(config("code.status.success"),"更新成功",$result);
}
}
登录结果截图
更新用户结果截图
?
?另外获取当前用户token
$token = $this->request->header("access_token");
总结
1.从建表开始需要注意的是设置索引,方便模型中去查找;
2.尽可能的将获取的数据转换成数组或者json格式,方便获取和写入redis;
目前就是这样前端登录已完结,有什么不懂的可以下方评论区
|