Я создаю приложение, которое создаст сеанс пользователя вместе с MySQL на Node.js.
Я следовал учебному руководству по ссылке ниже и у меня возникли проблемы с использованием токена JWT.
Я получаю сообщение об ошибке «Пожалуйста, отправьте токен», если я сделаю запрос POST / регистрации через Почтальон.Я проверил Заголовок через поиск, но моя Авторизация в списке Заголовков не проверена.
Я только следовал за учебником, и это печально, что это не работает.
Маршруты/Users.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;
Server.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);
});
Заголовок почтальона