gpt4 book ai didi

node.js - 为什么我的 jwt token 在背面而不是正面返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:25 26 4
gpt4 key购买 nike

我正在尝试向我的 mLab 数据库发出 GET 请求。我通过请求传递 JWT token ,并将其记录在客户端和服务器上。在客户端读取正确,但在服务器上显示 null。任何帮助将非常感激。我正在使用 Node.js 和 Angular。我对此还很陌生,所以如果错误很明显,我提前道歉。
这是服务器的 GET 路由:

router.get('/', (req, res, next) => {
var decoded = jwt.decode(req.query.token);
console.log(decoded);
console.log('employees');
if(decoded) {
return Company.find({_id: decoded._id})
.populate('user', 'firstName')
.exec(function(err, company) {
if (err) {
return res.status(500).json({
title: 'An error occurred',
error: err
});
}
res.status(200).json({
message: 'Success',
obj: company
});
});
} else {
return res.status(401).json({
title: 'Not authenticated',
error: {
message: 'Please create an account or sign in'
}
});
}
console.log(company);

});

这是客户端:

getEmployees() {
const token = localStorage.getItem('token')
? '?token=' + localStorage.getItem('token')
: '';
console.log(token);
return this.http.get('http://localhost:3000/company' + token)
.map((response: Response) => {
const employees = response.json().obj;
console.log(employees);
let transformedEmployees: Employee[] = [];
for (let employee of employees) {
transformedEmployees.push(new Employee(
employee.firstName,
employee.lastName,
employee.email,
employee.password,
employee.jobTitle,
employee.isAdmin,
employee.tasks
));
}
console.log(transformedEmployees)
this.employees = transformedEmployees;
return transformedEmployees;
})
.catch((error: Response) => {
this.errorService.handleError(error.json());
return Observable.throw(error.json())
});
}

最佳答案

您不应将 token 放置在请求的 Authorization header 中。

您使用快速中间件来解码 token :

const myDecoder = (req, res, next) => {
req.user = jwt.decode(req.headers.authorization);
next();
}

然后,您将其放置在 route :

router.get('/', myDecoder, (req, res) => {
let user = req.user;
console.log(user);
console.log('employees');
if (user) { blah }
...

不应通过 URL 本身传递整个 token 。

关于node.js - 为什么我的 jwt token 在背面而不是正面返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46919098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com