2017-08-17 70 views
1

我已將集成的passport-jwt用於驗證目的。它的工作方式非常魅力,但每當前端人從前端角色2使用它時,它會給予未經授權的401。我已經嘗試了很多,但沒有得到任何線索,但它一定是一個愚蠢的錯誤。Passport-jwt問題:JWT令牌與郵遞員一起工作,但未與UI API調用

我的護照戰略文件是

let JwtStrategy = require('passport-jwt').Strategy, 
    ExtractJwt = require('passport-jwt').ExtractJwt; 
//let fromHeader = require('passport-jwt').fromHeader 


// load up the user model 
const User = require('../components/user/model'); 
const database = require('./database'); // get db config file 
const config = require('./config'); // get db config file 

module.exports = function(passport) { 
//var passportStrategy = function(passport){ 
    let opts = {}; 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    //opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT"); 

    console.log("opts.jwtFromRequest==",opts.jwtFromRequest); 

    opts.secretOrKey = config.secret;//config.secret; 
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
    //console.log("opt==",JSON.stringify(opt)); 
    //console.log("jwt_payload===",jwt_payload); 
    User.findOne({_id: jwt_payload._doc._id}, function(err, user) { 

      if (err) { 
       return done(err, false); 
      } 
      if (user) { 
       done(null, user); 
      } else { 
       done(null, false); 
      } 
     }); 
    })); 
}; 

我的路線是

app.get("/api/user/getAll", 
    passport.authenticate('jwt',{session:false}), 
    userController.fetchUsers 
); 

和前端頭部追加如下:

logoutUser(token) { 

//const userData = JSON.stringify(userInfo); 

var headers = new Headers(); 


headers.append('Content-Type', 'application/json'); 

headers.append('Authorization', token); //e.g.token = JWT dasddddasdsda 

//headers.append('Authentication', token); 

console.log(headers) 



return this.http.post('http://localhost:9000/api/user/logout', { headers: headers }) 

.map((response: Response) =〉 { 

return response.json() 

}) 

.catch(this.errorHandler); 

} 

如果有人能夠幫助我進一步發現錯誤,那真的太好了。

回答

2

post方法的第二個參數是payload。

所以下面

this.http.post('http://localhost:9000/api/user/logout', { headers: headers }) 這個代碼必須是

this.http.post('http://localhost:9000/api/user/logout', {}, { headers: headers }) 
+0

謝謝@srisaiswaroop它的工作完美。 :) –