2017-01-14 10 views
0

У меня есть Express как backend и я пытаюсь добавить аутентификацию с помощью Passport.js. Я хочу проверить подлинность только пароль - и уникальный пароль находится в/конфигурации/главный названный ключ:Паспорт JWT Express неавторизованный

я могу генерировать JWT, отправив запрос POST с помощью/аутентификации, Но я не могу получить доступ к приложению с помощью этого JWT и Я получаю ERROR 401 с несанкционированным письмом в Postman. Мои файлы:

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 
     } 
    })); 
}; 

app.js

// 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); 

Что я делаю неправильно? Пожалуйста, дайте мне знать, чтобы я мог улучшить свой код и продолжить работу с моим сайтом. Я новичок в функции аутентификации, поэтому, пожалуйста, объясните, что я сделал неправильно.

ответ

2

Исправлено! Проблема заключалась в том, что ответ я получил:

{ «Успех»: правда, «маркер»: «JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJwYXNzIiwiaWF0IjoxNDg0NDE1MzA4LCJleHAiOjE0ODQ1MDE3MDh9.Wb00qRygYnrpFTx2zs6o037i3UNiwRtmrrXFVhVYM04» }

и я скопировать и вставить маркер без начало JWT