2017-09-16 3 views
0
getProfile(){ 
    let headers = new Headers(); 
    this.loadToken(); 
    headers.append('Content-Type','application/json'); 
    headers.append('Authorization',this.authToken); 
    console.log(this.authToken); 
    return this.http.get('http://localhost:3000/users/profile', {headers: headers}).map((res : Response)=> { 
     console.log(res.json()); 
     res.json(); 
    }); 
    } 

    storeUserData(token , user){ 
    localStorage.setItem('id_token' , token); 
    localStorage.setItem('user', JSON.stringify(user)); 
    this.authToken = token; 
    this.user = user; 
    } 

    loadToken(){ 
    const token = localStorage.getItem('id_token'); 
    console.log(token); 
    this.authToken = token; 
    } 

ci-dessus est le code pour configurer l'utilisateur d'entrer dans un profil en générant le jeton stocké dans le stockage local par la méthode loadToken().procédé http.get fonctionne bien en facteur, mais le retour en réponse nulle angulaire 2

Lors de l'exécution de l'erreur de la console vient comme GET http://localhost:3000/users/profile net :: ERR_EMPTY_RESPONSE Réponse {_body: ProgressEvent, état: 0, ok: false, statusText: "", en-têtes: En-têtes, ...}

Voici le code pour passport.js et users.js respectivement:

var JwtStrategy = require('passport-jwt').Strategy, 
    ExtractJwt = require('passport-jwt').ExtractJwt; 

// const passport = require('passport'); 
const User = require('../models/user'); 
const jwt = require('jsonwebtoken'); 
const config = require('../config/database'); 


module.exports = function(passport){ 
    var opts = {}; 
    console.log("hello"); 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt'); 
    // opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken(); 
    opts.secretOrKey = config.secret; 
    console.log("hello"); 
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
     console.log("hello"); 
     console.log(jwt_payload); 
     console.log(jwt_payload._doc); 
     console.log(jwt_payload.data._id); 
      User.findOne({_id: jwt_payload.data._id}, function(err, user) { 
       if(err){ 
        // console.log("test1"); 
        return done(err,false); 
       } 
       if(user){ 
        // console.log("test2"); 
        return done(null , user); 
       } 
       else{ 
        // console.log("test3"); 
        return done(null, false); 
       } 
      }); 
    })); 
} 
router.get('/profile',function(req,res,next){ 
    passport.authenticate('jwt',{session:false} , function(err,user,info){ 
     if(err){ return next(err);} 
     if(!user){ 
      console.log('User not found 1! '); 
      // return res.redirect('/register'); 
     } 
     else{ 
      // console.log(user); 
        res.json({ 
            success: true, 
            msg: 'You have entered profile successfully !', 
            user:{ 
            id:user._id, 
            name:user.name, 
            username:user.username, 
            email:user.email, 
            contact:user.contact 
           } 
           }); 

     } 

    })(req,res,next); 
}); 
+0

il a donné une erreur non autorisée –

Répondre

1

Essayez de changer le return du getProfile() à cela,

return this.http.get('http://localhost:3000/users/profile', {headers: headers}).map((res : Response)=> { 
    console.log(res.json()); 
    return res.json(); 
}); 

Voir le return ajouté avant res.json();. Voyez si cela a aidé (ou changé quelque chose dans votre réponse).

+0

désolé il n'a rien changé, peut-être quelque chose d'autre provoque l'erreur –