2017-01-14 12 views
0

私はExpressをバックエンドとして使用しており、Passport.jsを使用して認証を追加しようとしています。 私はパスワードのみで認証する - とキーの名前/設定/メインに位置して一意のパスワード:、私は/認証経由でPOSTリクエストを送信することにより、JWTを生成することができますPassport JWT Express Unauthorized

しかし、私はそのJWTを使用してアプリケーションにアクセスすることはできませんし、私は郵便配達員で書かれたUnauthorizedで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 
     } 
    })); 
}; 

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の開始

関連する問題