2017-09-16 4 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; 
    } 

上記においてヌル応答を返すはloadToken()メソッドによって、ローカルストレージに格納されたトークンを生成することにより、プロファイルに入力するようにユーザを設定するためのコードです。http.get方法郵便配達に細かい作業が、角度2

コンソールのエラーを実行すると http://localhost:3000/users/profileネットをGET :: ERR_EMPTY_RESPONSE レスポンスとして来以下

されている{_body:ヘッダ、...によってProgressEvent、状態:0、[OK]:偽、STATUSTEXT: ""、ヘッダ}それぞれpassport.jsとusers.jsのためのコード:

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

許可されていないエラーが発生しました –

答えて

1

、これにgetProfile()return変更してみてください

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

res.json();の前に追加されたreturnを参照してください。それが助けられたかどうかを確認してください。

+0

申し訳ありませんが、何か変更がありませんでした。 –

関連する問題