Arhn - архитектура программирования

Паспорт JWT Express Неавторизованный

У меня есть Express в качестве бэкэнда, и я пытаюсь добавить аутентификацию с помощью Passport.js. Я хочу аутентифицироваться только по паролю и уникальному паролю, расположенному в именованном ключе /config/main:

Я могу сгенерировать JWT, отправив запрос POST через /authenticate, но я не могу получить доступ к приложению с помощью этого JWT, и я получаю ОШИБКУ 401 с неавторизованным, написанным в Postman. Мои файлы :

паспорт.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);  

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


Ответы:


1

Починил это! Проблема была в том, что я получил ответ:

{ "успех": истина, "токен": "JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJwYXNzIiwiaWF0IjoxNDg0NDE1MzA4LCJleHAiOjE0ODQ1MDE3MDh9.Wb00qFVygYnrpFTx2mRxs6o037i3UN}

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

14.01.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..