node.js - 验证邮箱后登录无反应
问题描述
您好,我正在创建一个身份验证登录系统。注册时,我收到这些值作为响应:-
{
"isVerified": false,
"_id": "5c3f0f4086a0b583407a5f9",
"fullName": "XYZ",
"email": "xyz@xyz.com",
"password": "$2a$10$ItdTDSa5QQBYQweQrMWc.5o8N8STD/HiYN2qNb53iN1YQ6KXV/dy",
"phoneNumber": "99165631",
"emailResetToken": "62e5c96fdbcad3fec8b10badb51b259376cacf9cd0b73dff3c45d3ebe9a68d29",
"emailExpires": "2019-01-16T17:02:24.525Z",
"saltSecret": "$2a$10$ItdTDSa5BYQweQrMWc.",
"__v": 0
}
所以,从这里我可以通过将默认isVerified
false设置为true来验证电子邮件地址
现在,我在/login
创造条件的路线上面临问题。如果isVerified
为真,则用户可以登录。
/登录:-
router.post('/login' , (req, res, next) => {
User.find({email: req.body.email})
.exec()
.then(user => {
if(user.length < 1) {
return res.status(401).json({
message: "Auth failed. User not found."
})
}
bcrypt.compare(req.body.password, user[0].password, (err, result) =>{
if (err) {
return res.status(401).json({
message: "Auth failed. Check email and password"
});
}
if(!result && user[0].isVerified === false){
return res.json({
message: "User's account is not verified."
});
}
if (result && user[0].isVerified === true){
const adminEmail = "xyz@xyz.com";
const role = user[0].email===adminEmail? "admin" : "user";
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id,
phoneNo: user[0].phoneNumber,
role
},
process.env.JWT_KEY,
{
expiresIn : "1h"
});
return res.status(200).json({
message: "Auth Successful",
token : token
});
}
});
})
.catch(err =>{
if (err.code == 500)
res.status(500).send(["Something went wrong in login"]);
else
return next(err);
});
});
我无法在这里登录。我哪里错了?
解决方案
推荐阅读
- blockchain - 老板坚持在现有应用程序上使用 Bockchain
- c# - 有没有办法区分 .NET 中的 SQL Money 和 Decimal 类型?
- django - Django 2.0 Admin:即使 ForeignKey on_delete 字段设置为 CASCADE,删除是否确认?
- python - 自我如何在python的类中工作
- linq - 找不到类型 [Newtonsoft.Json.Linq.JObject]
- python - AnyMail 没有在 Django 测试中发送电子邮件,尽管 mail.outbox 是空的?
- arduino - macOS X Mojave 10.14 Beta FTDI USB 串行驱动程序
- scala - Scala 如何使用日期时间库以前导 0 填充一个月。不想使用字符串格式
- xamarin - Xamarin Google API 客户端不存在?
- php - 从 PHP SOAP Web 服务返回 XML