Я создал проект в nodejs, чтобы проверить, как работает jwt. Я поставил аутентификацию на маршрут, который я могу проверить с почтальоном. Хотя я хочу, чтобы этот проверенный маршрут отображал страницу, если пользователь вошел в систему. Я использую handlebars.js для шаблонов. Может кто-нибудь помочь мне, как это сделать.
index.js (Маршрут)
var ctrlUsers = require('../controllers/users.controllers.js');
router
.route('/users/login')
.post(ctrlUsers.login);
app.use(ctrlUsers.authenticate);
.get(ctrlUsers.authenticate,ctrlUsers.showaddress);
module.exports = router
users.controller.js
module.exports.login = function(req, res) {
console.log('logging in user');
var username = req.body.username;
var password = req.body.password;
User.findOne({
username: username
})
.exec(function(err, user) {
if (err) {
console.log(err);
res.status(400).ender('error');
}
else {
if (bcrypt.compareSync(password, user.password)) {
console.log('User found', user);
var token = jwt.sign({ username: user.username }, 's3cr3t', { expiresIn: 3600 });
console.log("Token1" + token);
res
.status(200)
.redirect('/');
} else {
res
.status(401)
.render('error');
}
}
});
};
module.exports.showaddress = function(req, res) {
res.render('index');
console.log("I am in");
console.log(req.user);
}
module.exports.authenticate = function(req, res, next) {
var headerExists = req.headers.authorization;
console.log(headerExists);
if (headerExists) {
var token = req.headers.authorization.split(' ')[1];
jwt.verify(token, 's3cr3t', function(error, decoded) {
if (error) {
console.log(error);
console.log("Token 2" + token);
res.status(401).json('Unauthorized');
}
else {
req.user = decoded.username;
console.log("Here");
next();
}
});} else { console.log("Token 3" + token) res.status(403).json('No token provided'); } };
При проверке с Почтальоном это работает нормально. Я просто не уверен, как заставить его работать в браузере. Как будто он должен показывать мне страницу, когда я нажимаю "http://localhost:3000/users/showaddress" при входе в систему.
Может кто-нибудь, пожалуйста, помогите с этим.