持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
用户信息获取,主要是用于登录后将用户信息展示到页面上。这个功能比较简单易懂。
细节:此时用户登录成功后应该已经拥有了token,所以应该还是要验证是否存在token后,再去数据库中根据唯一email查询信息去展示到页面的。
正文:
在路由处设置中间件,验证是否可以通过验证token的存在。通过后才能进入到获取用户信息的控制器当中。
router.get('/',authMiddleware,getUser) //先验证是否可以过authorization这关
当token被解签成功,并验证符合登录信息中的token时,解签成功后next()进入控制器哦。
- 通过email获取到该条数据库所有信息
没有获取到那就error
const {email} = req.body.user;
const user = await User.findByPk(email)
if(!user){
throw new HttpException(401,"用户不存在","user is not found")
}
- 返回数据->获取成功
返回的时候记得删除掉密码这种敏感信息
并同时将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数据