2017-02-01 3 views
0

Я использую express-jwt для athentication, и следующий мой код:экспресс-JWT промежуточного аутентификации не работает

api>routes/index.js:

var express = require('express'); 
var router = express.Router(); 

var jwt = require('express-jwt'); 
var auth = jwt({ secret: 'thisIsSecret', requestProperty: 'auth' }); 

после этого внутри index.js когда я использую auth промежуточного программного

router.post('/locations/:locationId/reviews', auth, ctrlReviews.reviewsCreate); 

маршрут, когда вы хотите отправить данные для отзывов с почтовыми людьми, запрос отправляется на погрузку, nd нет ответа, но если удалить auth из запроса маршрута, ответьте. Я также проверил с

var auth = jwt({ 
    secret: process.env.JWT_SECRET, 
    userProperty: 'payload' 
}); 
+0

Ваша экспресс-логика jwt работает для меня. Вы отправляете действительный JWT в заголовке авторизации в Postman? – dan

+0

@dan Я хочу проверить 'unautorizedError' и поймал, что в' app.js' что-то вроде 'app.use (function (err, req, res, next) { if (err.name === 'UnauthorizedErorr') { res.status (401); res.json ("сообщение:" + err.name + ":" + err.message); } }); 'и ожидать ответа на сообщение. – jones

+0

@dan Извините, еще раз проверьте, у меня есть ошибка типа в 'app.js' (' UnauthorizedErorr'). Спасибо u – jones

ответ

0

Как уже упоминалось в комментариях, что вы пытаетесь справиться действительных и недействительных маркеров. Это должно быть возможно с чем-то похожим на приведенный ниже код.

Если вы используете Postman для вызова этого следующего заголовка, вы получите 200 OK, с сообщением «OK!».

Authorization: Bearer validJWT 

Если вы используете Почтальон назвать это без действительного JWT, то вы будете получать 401 Несанкционированное с сообщением «Недопустимый маркер ...».

var jsonwebtoken = require('jsonwebtoken'); 
var express = require('express'); 
var app = express(); 

var jwt = require('express-jwt'); 
var auth = jwt({ secret: 'thisIsSecret', requestProperty: 'auth'}); 

// Generate valid JWT 
console.log(jsonwebtoken.sign({ foo: 'bar' }, 'thisIsSecret')); 

app.post('/locations/:locationId/reviews', auth, function(req, res, next) { 
    // Log user details set in JWT 
    console.log(req.auth) 
    res.send('OK!'); 
}); 

// Handle invalid JWT 
app.use(function(err, req, res, next) { 
    if (err.constructor.name === 'UnauthorizedError') { 
     res.status(401).send('invalid token...'); 
    } 
}); 

app.listen(3000, function() { 
    console.log('Server running on 3000') 
}) 
Смежные вопросы