eggjs 怎么实现更新用户信息接口去更新个性签名?
Posted 凯小默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eggjs 怎么实现更新用户信息接口去更新个性签名?相关的知识,希望对你有一定的参考价值。
1、新建更新用户信息的路由
'use strict';
/**
* @param Egg.Application app - egg application
*/
module.exports = app =>
const router, controller, middleware = app;
// 传入加密字符串
const verify_token = middleware.verifyToken(app.config.jwt.secret);
// 注册路由
router.post('/api/user/register', controller.user.register);
// 登录路由
router.post('/api/user/login', controller.user.login);
// 测试 token 解析
router.get('/api/user/token', verify_token, controller.user.getTokenInfo);
// 获取用户信息
router.get('/api/user/getUserInfo', verify_token, controller.user.getUserInfo);
// 修改用户信息
router.post('/api/user/updateUserInfo', verify_token, controller.user.updateUserInfo);
;
2、实现更新用户 updateUserInfo 接口
- 通过 post 请求,在请求体中获取签名字段 signature
- 用 app.jwt.verify(token, app.config.jwt.secret),解析出 token 的值
- 校验是否 token 可以,需要在鉴权中间件里加返回
- 根据用户名,在数据库查找相对应的id操作
- 通过 service 方法 updateUserInfo 修改 signature 信息
在 /controller/user.js
添加,更新用户信息的方法
// 更新用户信息
async updateUserInfo()
try
const ctx, app = this;
// 0、获取用户输入的 signature
const signature = ctx.request.body;
// 1、获取请求头 authorization 属性,值为 token
const token = ctx.request.header.authorization;
// 2、用 app.jwt.verify(token, app.config.jwt.secret),解析出 token 的值
const decode = await app.jwt.verify(token, app.config.jwt.secret);
// 3、校验是否 token 可以,需要在鉴权中间件里加返回
if(!decode) return;
// 4、根据用户名,在数据库查找相对应的id操作
const userInfo = await ctx.service.user.getUserByName(decode.username);
// 5、通过 service 方法 updateUserInfo 修改 signature 信息
const result = await ctx.service.user.updateUserInfo(
...userInfo, signature
);
// 返回 token
ctx.body =
status: 200,
desc: '更新成功',
data:
id: userInfo.id,
username: userInfo.username,
signature
;
catch (error)
ctx.body =
status: 500,
desc: '更新失败',
data: null
在 /service/user.js
添加,更新用户数据库数据的方法
// 更新用户信息
async updateUserInfo(params)
const app = this;
try
// 通过 app.mysql.update 方法更新 user 表, 通过 id 筛选用户
const result = await app.mysql.update('user',
...params ,
id: params.id
);
return result;
catch(error)
console.log(error);
return null;
3、测试更新用户信息接口
- 登录生成 token
- 在测试接口请求头带上 token 获取数据
- 在测试接口请求体添加个性签名的数据
先新建接口保存
然后登录拿到 token 运行,修改个性签名信息
以上是关于eggjs 怎么实现更新用户信息接口去更新个性签名?的主要内容,如果未能解决你的问题,请参考以下文章