Olá professor, não sei qual foi meu erro, mas quando faço o post para /autenticar, sempre passa na função verificaToken, já tentei de tudo mas não sei mais o que fazer.
Meu código do arquivo express.js
var express = require('express');
var consign = require('consign');
var bodyParser = require('body-parser');
module.exports = () => {
var app = express();
app.use(bodyParser.json());
app.set('secret', 'q!w@e#r$t%y');
consign()
.include('models')
.then('api')
.then('controllers/auth.js')
.then('controllers')
.into(app);
return app;
}
Meu código do controllers/auth.js
module.exports = function(app) {
var api = app.api.auth;
app.post('/autenticar', api.autentica);
app.use('/*', api.verificaToken);
};
Meu código da api/auth.js
var mongoose = require('mongoose');
var jwt = require('jsonwebtoken');
module.exports = function(app) {
var api = {};
var model = mongoose.model('Usuario');
api.autentica = function(req, res) {
console.log('Autenticando usuário');
let login = req.body.login;
let password = req.body.password;
model.findOne({login, password}).then((user) => {
if(!user) {
console.log('Login e senha inválidos');
res.sendStatus(401);
}
else {
let token = jwt.sign({ login: user.login }, app.get('secret'), {expiresIn: 7200});
console.log('Token criado e sendo enviado no header da resposta');
res.set('x-access-token', token);
res.end();
}
}, (error) => {
console.log('Login e senha inválidos');
res.sendStatus(401);
});
};
api.verificaToken = function(req, res, next) {
let token = req.headers['x-access-token'];
if(token) {
console.log('verificando token...');
jwt.verify(token, app.get('secret'), (error, decoded) => {
if(error) {
console.log('Token rejeitado');
res.sendStatus(401);
}
req.usuario = decoded;
next();
});
}
else {
console.log('Token não foi enviado');
res.sendStatus(401);
}
}
return api;
};