Boa noite,
Estou realizando uma aplicação de acordo foi ensinado no curso, porém não estou conseguindo obter o token nas requisição req.headers['x-access-token'] no backend.
O código está um pouco diferente pois estou utilizando o banco mysql, mas, consigo realizar a consulta, montar o token e enviar o mesmo ao angular até mesmo consigo realizar o login com o usuário e seus dados de acordo com o meu banco. Bom até o envio do token ao $window.localStorage.token, está sendo realizando perfeitamente, pois o mesmo guarda no localStorage do navegador. Porém quando é enviado pelo interceptor para o backend chega como undefined.
Alguém pode me ajudar?
segue o codigo das minhas rotas do auth.js
var jwt = require("jsonwebtoken");
module.exports = function (app) {
app.post('/autentica', function (req, res) {
var connection = app.persistencia.connectionFactory();
var authDAO = new app.persistencia.authDAO(connection);
var usuario = {
login: req.body.login,
password: req.body.password
}
authDAO.autentica(usuario, function (erro, result) {
if (result.length == 0) {
console.log('Login/senha inválidos');
res.sendStatus(401);
} else {
var token = jwt.sign({ login: result.login }, app.get('secret'), {
expiresIn: 1800 // expires in 30 min
});
console.log('Autenticado: token adicionado na resposta');
res.set('x-access-token', token);
res.end();
}
});
});
app.use('/*', function (req, res, next) {
var token = req.headers['x-access-token'];
console.log(token);
if (token) {
console.log("verificando token");
jwt.verify(token, app.get('secret'), function (erro, decoded) {
if (erro) {
console.log("token rejeitado");
res.sendStatus(401);
}
req.login = decoded;
next();
});
} else {
console.log("token não enviado");
res.sendStatus(401);
}
});
}
Segue o codigo do service token-interceptor.js
angular.module('wetraining')
.factory('tokenInterceptor', function ($q, $window, $location) {
var interceptor = {};
interceptor.response = function (response) {
var token = response.headers('x-access-token');
if (token) {
$window.localStorage.token = token;
console.log('------------------------------------');
console.log("token armazenado no localStorage");
console.log('------------------------------------');
}
return response;
}
interceptor.request = function (config) {
config.headers = config.headers || {};
if ($window.localStorage.token) {
config.headers['x-access-token'] = $window.localStorage.token;
console.log('------------------------------------');7
console.log($window.localStorage.token);
console.log( config.headers['x-access-token']);
console.log('------------------------------------');
}
return config;
}
return interceptor;
});
segue também os dados da minha main.js
angular.module('wetraining', ['ngAnimate', 'ngRoute', 'ngResource'])
.config(function ($routeProvider, $locationProvider, $httpProvider) {
$httpProvider.interceptors.push('tokenInterceptor');
$routeProvider.when('/home', {
templateUrl: '/pages/home.html',
// controller: 'HomeController'
});
$routeProvider.when('/login', {
templateUrl: '../pages/login.html',
controller: 'LoginController'
});
$routeProvider.otherwise({ redirectTo: '/home' });
});