4
respostas

Unauthorized

Parece que o findOne não esta achando meu usuario

fui no terminal do mongo e achou:

db.usuarios.findOne({login: 'marcos', senha: '123'}) 2017-05-07T18:44:37.728-0300 I NETWORK [thread1] trying reconnect to 127.0.0.1: 27017 (127.0.0.1) failed 2017-05-07T18:44:37.740-0300 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127 .0.0.1) ok { "_id" : ObjectId("590f6e4b035c079a25409e54"), "login" : "marcos", "senha" : "123" }

Console nav: Object { data: "Unauthorized", status: 401, headers: Yc/<(), config: Object, statusText: "Unauthorized" } login-controller.js:13:4

console serv

C:\Program Files\nodejs\alurapic>npm start

alurapic@1.0.0 start C:\Program Files\nodejs\alurapic node server.js

consign v0.1.2 Initialized in app + .\models\foto.js + .\models\usuario.js + .\api\auth.js + .\api\foto.js + .\api\grupo.js + .\routes\auth.js + .\routes\foto.js + .\routes\grupo.js Servidor iniciado Connectado ao mongoDB Login e senha invalidos

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 e senha invalidos');
                    res.sendStatus(401);
                }else{
                     var token = jwt.sign( 
                         {login: usuario.login}, 
                         app.get('secret'), {
                     expiresIn: 86400 // valor em segundo, aqui temos um total de 24 horas
                 });
                    console.log('Token criado sendo enviado no header de resposta');
                    res.set('x-access-token',token);
                    res.end();

                }
            }, function(error){
                console.log('Login e senha invalidos');
                $scope.usuario = {};
                res.sendStatus(401);
            });
    };


    api.verificaToken = function(req, res, next){
        var token = req.headers['x-access-token'];
        if(token){
                console.log('verificando token...')
                jwt.verify(token, app.get('secret'), function(err, decoded){
                if(err){
                    console.log('Token rejeitado');
                    res.sendStatus(401);
                }
                req.usuario = decoded;
                next();
            });
        } else{
            console.log('Token não foi enviado');
            res.sendStatus(401);
        }


    };

    return api;

};
4 respostas

Você esta acessando uma rota protegida sem se autenticar. Talvez você tenha ativado a proteção antes da rota de login que não pode ser protegida.

Como ativou as rotas? Cole o código.

module.exports = function(app){

var api = app.api.auth;

app.post('/autenticar', api.autentica); app.use('/*', api.verificaToken);

};

consign({ cwd: 'app'}) .include('models') .then('api') .then('routes/auth.js') .then('routes') .into(app);

melhor assim

consign({ cwd: 'app'})
    .include('models')
    .then('api')
    .then('routes/auth.js')
    .then('routes')
    .into(app);








module.exports = function(app){

    var api = app.api.auth;

    app.post('/autenticar', api.autentica);
    app.use('/*', api.verificaToken);

};

Se o login não bater com o que vc gravou não vai achar. Testou se os dados recebidos no server estão corretos?