Javascript 节点jsapi中的JWT令牌生成
我想用我已经在MongoDB集合中创建的用户的登录在我的API中实现JWT令牌,我想通过登录页面对其进行身份验证,目前我正在与邮递员联系,但我无法生成一个,请有人帮助 以下是我的代码:- 1) server.js const jwt=require('jsonwebtoken')//用于创建、签名和验证令牌Javascript 节点jsapi中的JWT令牌生成,javascript,node.js,mongodb,jwt,Javascript,Node.js,Mongodb,Jwt,我想用我已经在MongoDB集合中创建的用户的登录在我的API中实现JWT令牌,我想通过登录页面对其进行身份验证,目前我正在与邮递员联系,但我无法生成一个,请有人帮助 以下是我的代码:- 1) server.js const jwt=require('jsonwebtoken')//用于创建、签名和验证令牌 const logger = require('morgan'); const mongoose = require("mongoose"); mongoose.Promise = glob
const logger = require('morgan');
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/saddleHorseacademy");
process.env.SECRET_KEY = "SaddleHorseKey";
app.post('/loginUser',(request,response)=>{
var user = {
userName : request.body.userName,
password : request.body.password
}
userList.findOne({user},function(error,user){
if(error){
console.log(error);
return response.status(500).send("unable to sign in");
}
if(!user){
return response.status(404).send("not user found");
}
else{
var token = jwt.sign(user,process.env.SECRET_KEY,{
expiressInMinutes:1440
});
return response.json({
success:true,
Message:'Check your token!',
token: token
});
}
})
});
当我试图通过以下格式与邮递员联系时:-
{
"userName":"mayank_9",
"password":"saddle09"
}
它返回的响应不是user find,但在我的数据库中有如下数据
{
"_id" : ObjectId("5ac48ba8034cf044c0832ea9"),
"userName" : "mayank_9",
"password" : "saddle09",
"__v" : 0
}
请帮我解决这个问题,查询对象
{user}
使用的find
方法创建了以下对象:
{
user: {
userName: 'mayank_9',
password: 'saddle09'
}
}
因此,find
试图将对象与具有该对象作为值的user
属性相匹配。我假设这不是您收集的记录的结构,因此它不会找到匹配项。直接传递对象将避免以下情况:
userList.findOne(user, function (err, user) {...});
你应使用:
.findOne(user, function() {...});
没有花括号。我尝试了这个,但当我尝试调试它时,它仍然说找不到用户。用户列表。findOne(用户)它有用户名和密码信息,但最终按F8键后,它变成了用户:null@MayankPurohit哪个
用户
?对查询对象和返回值都使用user
。也,使用这些值直接查询数据库,查看它是否返回记录。返回值为的用户我已将用户对象更改为usercredentials,并且它也开始提供错误负载,应该是普通的object@MayankPurohit只要集合中的记录与文章中的记录相似,并且查询对象与某些值,则它应返回匹配的记录。查询对象不匹配(例如键入错误、编码问题等),或者查询的集合错误。使用速记分配的最初问题肯定是个问题。请尝试记录req.body以检查键/值对是否正确。请显示postman的屏幕截图