2017-01-14 2 views
0

Express가 백엔드로 Passport.js를 사용하여 인증을 추가하려고합니다. 가 난 단지 암호로 인증 할 -와에있는 고유 암호/설정/메인라는 이름의 키를Passport JWT Express Unauthorized

내가 를 인증하지만 사용하여 응용 프로그램에 액세스 할 수 없습니다 /를 통해 POST 요청을 전송하여 JWT를 생성 할 수 JWT와 우체부에 무단 작성한 ERROR 401이 표시됩니다. 내 파일 :

passport.js

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

var config = require('./main'); 
var pass = config.key; 
// Setup work and export for the JWT passport strategy 
module.exports = function(passport) { 

var opts = {}; 
opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
opts.secretOrKey = config.secret; 
// opts.issuer = "accounts.examplesoft.com"; 
// opts.audience = "yoursite.net"; 
passport.use(new JwtStrategy(opts, function(jwt_payload, done) { 
     if (jwt_payload.key === pass) { 
      return done(null, password); 
     } else { 
      return done(null, false); 
      // or you could create a new account 
     } 
    })); 
}; 

내가 무슨 일을하고있는 중이 야

// Initialize passport for use 
app.use(passport.initialize()); 
// Bring in defined Passport Strategy 
require('./config/passport')(passport); 
var mainConfig = require('./config/main'); 

var key = mainConfig.key; 
var pass = mainConfig.password; 
// Authenticate the user and get a JSON Web Token to include in the header of future requests. 
router.post('/authenticate', function(req, res) { 

     var token = jwt.sign({ 
    key:'pass' 
}, mainConfig.secret, { expiresIn: '24h' }); 
      res.json({ success: true, token: 'JWT ' + token }); 

// Enable CORS from client-side 
app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials"); 
    res.header("Access-Control-Allow-Credentials", "true"); 
    next(); 
}); 
router.get('/home', passport.authenticate('jwt', { session: false }), function(req, res) { 

}); 

// Set url for API group routes 
app.use('/react', router); 

app.js? 내 코드를 개선하고 더 나아갈 수 있도록 알려 주시기 바랍니다. 나는 인증 기능에 익숙하지 않으므로 내가 잘못한 것을 설명하십시오.

답변

2

고쳐! { "성공" "토큰"사실 : "JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJwYXNzIiwiaWF0IjoxNDg0NDE1MzA4LCJleHAiOjE0ODQ1MDE3MDh9.Wb00qRygYnrpFTx2zs6o037i3UNiwRtmrrXFVhVYM04"}

: 문제는 내가 가진 응답이었다이었다

나는 복사하지 않고 토큰을 붙여 JWT 시작

관련 문제