07-blog-用户信息获取

155 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

用户信息获取,主要是用于登录后将用户信息展示到页面上。这个功能比较简单易懂。

细节:此时用户登录成功后应该已经拥有了token,所以应该还是要验证是否存在token后,再去数据库中根据唯一email查询信息去展示到页面的。

正文:

在路由处设置中间件,验证是否可以通过验证token的存在。通过后才能进入到获取用户信息的控制器当中。

router.get('/',authMiddleware,getUser) //先验证是否可以过authorization这关

当token被解签成功,并验证符合登录信息中的token时,解签成功后next()进入控制器哦。

  1. 通过email获取到该条数据库所有信息

没有获取到那就error

        const {email} = req.body.user;
        const user = await User.findByPk(email)
        if(!user){
            throw new HttpException(401,"用户不存在","user is not found")
        }
  1. 返回数据->获取成功

返回的时候记得删除掉密码这种敏感信息

并同时将token这种数据一并返回方便后续使用。

let token = await sign(user.username,email)
        delete user.dataValues.password;
        user.dataValues.token =token;
        return res.status(200)
                  .json({
                    status:1,
                    message:"请求用户信息成功",
                    data:user.dataValues
                  })

打印结果获取用户信息的结果:

{
    "status": 1,
    "message": "请求用户信息成功",
    "data": {
        "email": "acmenxin@163.com",
        "username": "lily",
        "avatar": null,
        "bio": null,
        "createdAt": "2022-10-03T12:06:53.000Z",
        "updatedAt": "2022-10-03T12:06:53.000Z",
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImxpbHkiLCJlbWFpbCI6ImFjbWVueGluQDE2My5jb20iLCJpYXQiOjE2NjQ3OTg4MTd9.4mEJwkxWnYeu82BNYn9fQXbBG5u27jOT4-7hGz6yadk"
    }
}

下一功能-更新用户信息:

大致流程:
1.验证接口权限是否可以通过token这关
2.获取到请求数据:req.body.eamil
3.验证请求数据:使用email验证数据在数据库中是否存在
4.修改用户数据:
4.1获取请求数据:body数据 => 更新的信息
4.2数据字段判断:要更新的数据是否符合各种标准eg:不为空?是否合规?
4.3password更新:要加密
4.4进行更新操作
5.返回数据
5.1去除password敏感信息
5.2添加token
5.3返回用户json数据