Prezados, boa noite,
preciso de ajuda por gentileza.
Quando clico em Entrar na página de login nada acontece. Já consultei no MongoDB e o usuário e senha estão corretos. Nada aparece no console. No CMD aparece
Nenhum token enviado
Parece que a aplicação quer um token, logo na tela de login, na $window.sessionStorage. Entendi que a configuração no Consign evitaria isso.
Como estão os arquivos:
express.js:
var express = require('express');
var consign = require('consign');
var bodyParser = require('body-parser');
var app = express();
app.use(express.static('./public'));
app.use(bodyParser.json());
app.set('secret', 'GALOFORTEVINGADOR');
consign({cwd: 'app'})
.include('models')
.then('api')
.then('routes/auth.js')
.then('routes')
.into(app);
module.exports = app;
app/api/auth.js:
var mongoose = require('mongoose');
module.exports = function(app) {
var api = {};
var model = mongoose.model('Usuario');
api.autentica = function(req, res) {
model.findOne({
login: req.body.login,
senha: req.body.senha
})
.then(function(usuario){
if (!usuario) {
console.log('Login/senha inválido(s)');
res.sendStatus(401);
} else {
var token = jwt.sign(
{login: usuario.login},
app.get('secret'),
{expiresIn: 900} // valor em segundo, aqui temos um total de 15 minutos
);
console.log('Autenticado: token adicionado na resposta');
res.set('x-access-token', token); // adicionando token no cabeçalho de resposta
res.end();
}
});
};
api.verificaToken = function(req, res, next) {
var token = req.headers['x-access-token']; // busca o token no header da requisição
if (token) {
console.log('Iniciando decodificação do token');
jwt.verify(token, app.get('secret'), function(err, decoded) {
if (err) {
console.log('Token rejeitado');
return res.destStatus(401);
}
else {
console.log('Token aceito')
req.usuario = decoded;
next();
}
});
}
else {
console.log('Nenhum token enviado');
return res.sendStatus(401);
}
};
return api;
};
app/routes/auth.js:
module.exports = function(app) {
var api = app.api.auth;
app.post('/autenticar', api.autentica);
app.use('/*', api.verificaToken);
};
login.html:
<h1 class="text-center">Login</h1>
<p class="alert-danger">{{mensagem}}</p>
<form ng-submit="autenticar()">
<div class="form-group">
<label>Código do Usuário</label>
<input type="text" ng-model="usuario.login" class="form-control">
</div>
<div class="form-group">
<label>Senha</label>
<input type="password" ng-model="usuario.senha" class="form-control">
</div>
<input type="submit" value="Entrar" class="btn btn-primary">
</form>
Obrigado pelo apoio.