携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情
当前用户信息
引言
通过之前一段时间 Express 和 Mysql 的学习
这里尝试来搭建一个 后台系统 来巩固下学习的技术。
当前用户信息
上一节,我们将 用户的一个 登录 的 前后端 逻辑 彻底做完毕了
这一节,我们来处理 当前用户信息
什么是 当前用户信息?
-
也就是在我们 登录 完成后,如果此时并不想将 敏感的用户信息 保存到本地的浏览器中,也就是
localstorage中 -
那我们的 用户数据 信息,如何获取呢?
获取当前用户信息
还记得,我们在 登录 完成后,会得到一个响应的数据 token 吗?
是的,这个 token 是我们存储到本地缓存中的,是不会随着刷新浏览器,而消失的。
所以在我们每次浏览器请求时,其实都会在请求头中,携带这个 token。那么我们就需要通过 后端 来解析用户请求头中的 token 来得到 当前请求 具体的 用户名 是谁
既然知道逻辑是什么了,我们准备后端的 API 接口
-
解析
tokenconst decode = (req) => { const token = req.headers?.authorization return jwt.verify(token, config.PRIVATE_KEY) } const { username } = decode(req) -
相关的
sql语句const selectOneUserInfo = `select user.id,user.create_time,user.username,userinfo.name,userinfo.email,userinfo.avatar_id,userinfo.roleArrId from user join userinfo on user.id = userinfo.userid where user.username = ?;` -
根据上面解析的 用户名,去获取用户详细信息
const sql = sqlAll.selectOneUserInfo const sqlArr = [username] const callback = (error, results) => { if (error) { console.log('连接出错') return } const user = results[0] user.roleArrId = JSON.parse(user.roleArrId) // 登陆成功 const code = 200 const data = { message: '获取用户详细信息成功!', user, flag: true } useResSend(res, code, data) } sqlConnect(sql, sqlArr, callback) -
在目录位置:
router\user\index.js文件中, 暴露我们的当前用户信息接口infoAPIconst Api = { info: '/info', } router.get(Api.info, userController.info)
总结
通过 Express-Mysql-Vue3-TS-Pinia 做出一个 后台系统 项目
完成了,可以请求获取 当前用户信息 的接口 API