我正在创建一个应用程序,它将与node.js上的mysql一起创建一个用户会话。
我遵循下面的链接教程,在使用jwt令牌时遇到了问题。
如果我通过 Postman 发出邮寄/注册请求,则会出现“请发送令牌”错误。我通过搜索检查了标题,但是没有检查标题列表中的授权。
我只是按照教程,很遗憾,它没有工作。
路由/用户.js
var express = require('express');
var users = express.Router();
var database = require('../Database/database');
var cors = require('cors')
var jwt = require('jsonwebtoken');
var token;
users.use(cors());
process.env.SECRET_KEY = "devesh";
users.post('/register', function(req, res) {
var today = new Date();
var appData = {
"error": 1,
"data": ""
};
var userData = {
"first_name": req.body.first_name,
"last_name": req.body.last_name,
"email": req.body.email,
"password": req.body.password,
"created": today
}
database.connection.getConnection(function(err, connection) {
if (err) {
appData["error"] = 1;
appData["data"] = "Internal Server Error";
res.status(500).json(appData);
} else {
connection.query('INSERT INTO users SET ?', userData, function(err, rows, fields) {
if (!err) {
appData.error = 0;
appData["data"] = "User registered successfully!";
res.status(201).json(appData);
} else {
appData["data"] = "Error Occured!";
res.status(400).json(appData);
}
});
connection.release();
}
});
});
users.post('/login', function(req, res) {
var appData = {};
var email = req.body.email;
var password = req.body.password;
database.connection.getConnection(function(err, connection) {
if (err) {
appData["error"] = 1;
appData["data"] = "Internal Server Error";
res.status(500).json(appData);
} else {
connection.query('SELECT * FROM users WHERE email = ?', [email], function(err, rows, fields) {
if (err) {
appData.error = 1;
appData["data"] = "Error Occured!";
res.status(400).json(appData);
} else {
if (rows.length > 0) {
if (rows[0].password == password) {
let token = jwt.sign(rows[0], process.env.SECRET_KEY, {
expiresIn: 1440
});
appData.error = 0;
appData["token"] = token;
res.status(200).json(appData);
} else {
appData.error = 1;
appData["data"] = "Email and Password does not match";
res.status(204).json(appData);
}
} else {
appData.error = 1;
appData["data"] = "Email does not exists!";
res.status(204).json(appData);
}
}
});
connection.release();
}
});
});
users.post('/login', function(req, res) {
var appData = {};
var email = req.body.email;
var password = req.body.password;
database.connection.getConnection(function(err, connection) {
if (err) {
appData["error"] = 1;
appData["data"] = "Internal Server Error";
res.status(500).json(appData);
} else {
connection.query('SELECT * FROM users WHERE email = ?', [email], function(err, rows, fields) {
if (err) {
appData.error = 1;
appData["data"] = "Error Occured!";
res.status(400).json(appData);
} else {
if (rows.length > 0) {
if (rows[0].password == password) {
token = jwt.sign(rows[0], process.env.SECRET_KEY, {
expiresIn: 5000
});
appData.error = 0;
appData["token"] = token;
res.status(200).json(appData);
} else {
appData.error = 1;
appData["data"] = "Email and Password does not match";
res.status(204).json(appData);
}
} else {
appData.error = 1;
appData["data"] = "Email does not exists!";
res.status(204).json(appData);
}
}
});
connection.release();
}
});
});
users.use(function(req, res, next) {
var token = req.body.token || req.headers['token'];
var appData = {};
if (token) {
jwt.verify(token, process.env.SECRET_KEY, function(err) {
if (err) {
appData["error"] = 1;
appData["data"] = "Token is invalid";
res.status(500).json(appData);
} else {
next();
}
});
} else {
appData["error"] = 1;
appData["data"] = "Please send a token";
res.status(403).json(appData);
}
});
users.get('/getUsers', function(req, res) {
var appData = {};
database.connection.getConnection(function(err, connection) {
if (err) {
appData["error"] = 1;
appData["data"] = "Internal Server Error";
res.status(500).json(appData);
} else {
connection.query('SELECT *FROM users', function(err, rows, fields) {
if (!err) {
appData["error"] = 0;
appData["data"] = rows;
res.status(200).json(appData);
} else {
appData["data"] = "No data found";
res.status(204).json(appData);
}
});
connection.release();
}
});
});
module.exports = users;
服务器.js
var express = require('express');
var cors = require('cors');
var bodyParser = require("body-parser");
var app = express();
var port = process.env.PORT || 3000;
app.use(bodyParser.json());
app.use(cors());
app.use(bodyParser.urlencoded({
extended: false
}));
var Users = require('./Routes/Users');
app.use('/users',Users);
app.listen(port,function(){
console.log("Server is running on port: "+port);
});
Postman 头
3条答案
按热度按时间sgtfey8w1#
下面是我的代码。我用的是axios
完整的源代码可以在这里找到
vwoqyblh2#
这也许对你有帮助
o2gm4chl3#
在这里,我添加了这个代码段,用于在header中添加token。登录后,获取token数据并将其添加到header中,以满足您的请求,比如token作为键,token数据作为值。