【发布时间】:2018-02-25 13:25:42
【问题描述】:
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/profilenet::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);
});
【问题讨论】:
-
它给出了一个未经授权的错误
标签: node.js angular angular2-services passport.js