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://localhost:3000/users/profile net :: ERR_EMPTY_RESPONSE 响应{_body:ProgressEvent,status:0,ok:false,statusText:“”,headers:Headers,...}
以下是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)
尝试将return
的{{1}}更改为此
getProfile()
在return this.http.get('http://localhost:3000/users/profile', {headers: headers}).map( (res : Response )=> {
console.log(res.json());
return res.json();
});
之前查看已添加的return
。看看这是否有帮助(或改变了你的回复中的任何内容)。