Node.js NodeJS可以';即使我给了持票人代币,也无法进行身份验证

Node.js NodeJS可以';即使我给了持票人代币,也无法进行身份验证,node.js,express,mongoose,Node.js,Express,Mongoose,下面的代码由我的jwt文件和user.service文件代码组成。即使我提供了承载令牌,我也无法进行身份验证。请帮我解决这个问题 我的user.service文件 module.exports={ 证明…是真实的 getAll, 盖特比德, 创造,, 更新, getByEmail, 更改密码, 删除:_删除 }; 异步函数身份验证({email,password}){ const user=wait user.findOne({ 电子邮件 }); if(user&&bcrypt.compareS

下面的代码由我的jwt文件和user.service文件代码组成。即使我提供了承载令牌,我也无法进行身份验证。请帮我解决这个问题

我的user.service文件

module.exports={
证明…是真实的
getAll,
盖特比德,
创造,,
更新,
getByEmail,
更改密码,
删除:_删除
};
异步函数身份验证({email,password}){
const user=wait user.findOne({
电子邮件
});
if(user&&bcrypt.compareSync(密码,user.hash)){
const{hash,…userWithoutHash}=user.toObject();
const token=jwt.sign(
{
sub:user.id
},
config.secret
);
const y=user.lastLoginDate;
user.lastloginandate=Date.now();
const x=user.lastLoginDate;
分配对象(用户,x);
等待user.save();
const axyz=user.id;
const companys=await company.find({userAccessId:user.id});
返回{
…userWithoutHash,
代币
公司
};
}
}
异步函数getById(userParam){
const user=wait user.findOne({
id:userParam.id,
defaultAccountId:userParam.defaultAccountId
});
如果(用户){
const companys=await company.find({userAccessId:user.id});
返回{
用户,
公司
};
}
}
异步函数getByEmail(userParam){
return wait User.findOne({
电子邮件:userParam.email
}).选择(“-hash”);
}
异步函数创建(userParam){
const users=wait User.findOne({
电子邮件:userParam.email
});
const user=新用户(userParam);
如果(!用户){
if(userParam.password){
user.hash=bcrypt.hashSync(userParam.password,10);
}
等待user.save();
const companys=await company.findOne({businessUnitId:userParam.defaultAccountId});
国际单项体育联合会(公司){
const Arrays=companys.userAccessId;
addToSet(user.id);
等待公司。保存();
}
const{hash,…userWithoutHash}=user.toObject();
const token=jwt.sign(
{
sub:user.id
},
config.secret
);
返回{
…userWithoutHash
};
}否则{
const idd=user.id;
const companys=await company.findOne({businessUnitId:userParam.defaultAccountId});
国际单项体育联合会(公司){
const Arrays=companys.userAccessId;
var index=Arrays.indexOf(users.id);
如果(索引>-1){
}否则{
Arrays.addToSet(users.id);
等待公司。保存();
返回userParam;
}
}
}
}
异步函数更新(userParam,调用){
const user=wait user.findOne({
id:userParam.id,
defaultAccountId:userParam.defaultAccountId
});
如果(用户){
const users=await User.findOne({userName:userParam.userName});
如果(!用户){
if(userParam.userName){
user.userName=userParam.userName;
const x=userParam.userName;
分配对象(用户,x);
等待用户。保存(x);
}
if(userParam.userRole){
user.userRole=userParam.userRole;
const y=userParam.userRole;
对象。分配(用户,y);
等待用户。保存(y);
}
const{hash,…userWithoutHash}=user.toObject();
const token=jwt.sign(
{
sub:user.id
},
config.secret
);
返回{
…userWithoutHash
};
}否则{
抛出“用户退出”;
}
}
}
异步函数changePassword(userParam){
const user=wait user.findOne({
电子邮件:userParam.email
});
如果(用户){
if(userParam.password){
userParam.hash=bcrypt.hashSync(userParam.password,10);
}
分配(用户,用户参数);
return wait user.save();
}
}
异步函数_delete(userParam){
const user=wait user.findOne({
id:userParam.id
});
如果(用户){
if(等待company.findOne({userAccessId:user.id})){
const companiess=await company.find({userAccessId:user.id});
if(公司){
常数n=单位长度;
对于(i=0;i-1){
阵列.拼接(索引1);
等待公司[i].save();
}
}
}
return wait user.remove();
}
}
}
异步函数getAll(userParam){
if(等待User.findOne({defaultAccountId:userParam.defaultAccountId})){
const user=wait user.find({defaultAccountId:userParam.defaultAccountId});
返回等待用户;
}
}
我的jwt文件:

const expressJwt=require(“expressJwt”);
const config=require(“config.json”);
const userService=require(“models/v1/user.service”);
module.exports=jwt;
函数jwt(){
const secret=config.secret;
返回表达式JWT({
秘密
伊斯雷克
}).除非({
路径:[“/users/login”]
});
}
异步功能(请求、有效负载、完成){
const user=await userService.getById(payload.sub);
如果(!用户){
返回完成(null,true);
}
完成();
}

请帮我解决这个问题。以前,当我没有将代码与团队集成时,它可以工作,集成代码后,它不工作,我得到了未经授权的错误。

显示完整的错误日志。它只是给出了未经授权的401您的数据库中是否有该条目?是的,如果令牌错误,则给出未经授权的错误响应
var decoded = jwt.verify(token, "someSecretKey");
console.log(decoded) // bar

// verify a token symmetric
jwt.verify(token, "someSecretKey", function(err, decoded) {
  console.log(decoded.foo) // bar
});

// invalid token - synchronous
try {
  var decoded = jwt.verify(token, 'wrong-secret');
} catch(err) {

}


jwt.verify(token, 'wrong-secret', function(err, decoded) {

});