七月老师您好,在使用LinValidator进行校验在附带JSON格式上存在一些问题请教一下!

来源:5-2 Lin-Validator获取HTTP参数

weixin_慕虎4250182

2020-02-20

七月老师您好,在使用LinValidator进行校验在附带JSON格式上存在一些问题,测试流程是这样的,首先对http://localhost:3000/v1/token发送请求附带如下:
{
“account”: "1234556@qq.com",
“secret”:“123456”,
“type”: 101
}
进行验证在TokenValidator中可以正常的进行判断并输出如下:
{
“msg”: “密码不正确”,
“error_code”: 10000,
“request”: “POST /v1/token”
}
可以正常进行判断,而后进行测试格式如下:
{
“account”: "1234556@qq.com",
“type”: 101
}
进行验证后输出如下:
{
“msg”: “we made a mistake”,
“error_code”: 999,
“request”: “POST /v1/token”
}
再次测试如下:
{
“account”: "1234556@qq.com",
“secret”:1234235,
“type”: 101
}
进行验证后输出如下:
{
“msg”: “we made a mistake”,
“error_code”: 999,
“request”: “POST /v1/token”
}
两者在终端输出一样如下:
Executing (default): SELECT id, nickname, email, password, openid, createdAt, updatedAt, deletedAt FROM user AS User WHERE (User.deletedAt IS NULL AND User.email = ‘1234556@qq.com’);
Error: Illegal arguments: object, string
at Object.bcrypt.compareSync (C:\Users\Administrator\Desktop\wechart\Service\node_modules\bcryptjs\dist\bcrypt.js:265:19)
at Function.verifyEmailpassword (C:\Users\Administrator\Desktop\wechart\Service\app\models\user.js:22:28)
at async emailLogin (C:\Users\Administrator\Desktop\wechart\Service\app\api\v1\token.js:64:16)
at async C:\Users\Administrator\Desktop\wechart\Service\app\api\v1\token.js:27:15
at async bodyParser (C:\Users\Administrator\Desktop\wechart\Service\node_modules\koa-bodyparser\index.js:86:5)
at async catchError (C:\Users\Administrator\Desktop\wechart\Service\middlewares\execption.js:11:9)

分析问题出现在数据库处理部分出现问题,Validator未守住第一道门,这种问题除了自添加一下判断外是否还有更好的方法呢?特此请教。

写回答

1回答

7七月

2020-02-21

可否告知为什么数据库查询不正确?

0
1
weixin_慕虎4250182
七月老师您好,这里修正一下问题,重新进行debug后确定错误出现在 const correct = bcrypt.compareSync(plainPassword, user.password);这一行上,再发送{ “account”: "1234556@qq.com", “type”: 101 }之后,由于未携带secret或者是secret格式并未按照要求(例如传入的是Number)填写,这时会出现plainPassword变为Null或者number,这组数据传入bcrypt.compareSync时会throw出一个错误。
2020-02-21
共1条回复

Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

理解异步编程本质/培养面向对象思维,独立完成Node.js服务端开发

2223 学习 · 878 问题

查看课程