admin管理员组文章数量:1277586
Here is the code for JWT:
const express = require("express");
const jwt = require("jsonwebtoken");
const app = express();
app.use(express.json());
const user = [
{
name: "Rohan",
id: 1,
},
{
name: "Sophie",
id: 2,
},
{
name: "Charlie",
id: 3,
},
];
app.get("/", (req, res) => {
res.send("Wele to Homepage");
});
app.get("/id", verifyToken, (req, res) => {
res.json(user.filter((id) => user.name === req.user.name));
});
function verifyToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(" ")[1];
if (token == null) return res.sendStatus(401);
jwt.verify(token, "secretKey", (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
app.post("/login", (req, res) => {
const username = req.body.username;
const user = { name: username };
jwt.sign(user, "secretKey", (err, token) => {
res.json({ token: token });
});
});
app.listen(4000, () => {
console.log("Server is listening on port: 4000");
});
Here is the code for JWT:
const express = require("express");
const jwt = require("jsonwebtoken");
const app = express();
app.use(express.json());
const user = [
{
name: "Rohan",
id: 1,
},
{
name: "Sophie",
id: 2,
},
{
name: "Charlie",
id: 3,
},
];
app.get("/", (req, res) => {
res.send("Wele to Homepage");
});
app.get("/id", verifyToken, (req, res) => {
res.json(user.filter((id) => user.name === req.user.name));
});
function verifyToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(" ")[1];
if (token == null) return res.sendStatus(401);
jwt.verify(token, "secretKey", (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
app.post("/login", (req, res) => {
const username = req.body.username;
const user = { name: username };
jwt.sign(user, "secretKey", (err, token) => {
res.json({ token: token });
});
});
app.listen(4000, () => {
console.log("Server is listening on port: 4000");
});
The req.headers['authorization'] is returning undefined when console.log(The req.headers['authorization'])
This code for JWT always return Status 401 (Unauthorized) when the request is sent in the format Authorization: Bearer "token" ,
Please help !!
Share Improve this question asked May 5, 2020 at 1:42 ScythrineScythrine 631 gold badge1 silver badge6 bronze badges3 Answers
Reset to default 7Do you use the Postman for test?
add 'authorization' key in headers section on the postman, like picture:
and not need 'authHeader.split(" ")1;' , please change your code like this:
const token = req.headers["authorization"];
// const token = authHeader && authHeader.split(" ")[1];
console.log(token)
I think the split syntax is incorrect. This code I have written below will work:
const authHeader = req.headers["authorization"];
console.log(authHeader)
const [bearer, token] = authHeader.split(' ');
if (!token) {
return res
.status(401)
.json({ error: 404, message: "Access denied. No token provided." });
}
Use this to split.
const token = req.headers && req.headers["authorization"].split(' ')[1]
I am attaching a snippet for reference
const jwt = require('jsonwebtoken');
const User = require('../models/user');
exports.isAuth = async (req, res, next) => {
if(req.headers && req.headers["authorization"]){
const token = req.headers && req.headers["authorization"].split(' ')[1]
const decode = jwt.verify(token, process.env.JWT_SECRET);
const user = await User.findById(decode.userId);
if(!user){
return res.json({
success: false,
message: 'unauthorized access!'
})
}
req.user = user;
next();
}else{
res.json({success: false, message: 'unauthorized access!'})
}
};
本文标签: javascriptreqheaders39authorization39 is undefined in Nodejs JWT(JSON WEB TOKEN)Stack Overflow
版权声明:本文标题:javascript - req.headers['authorization'] is undefined in Nodejs JWT(JSON WEB TOKEN) - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741282229a2370071.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论