[英]express-jwt authentication middleware not working
我正在使用express-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' });
当我在其中使用auth
中间件时在index.js
内部
router.post('/locations/:locationId/reviews', auth, ctrlReviews.reviewsCreate);
路由,当要用邮递员发布评论数据时,请求将转到加载状态,并且没有响应出现,但是如果从路由请求中删除auth
,则会给出响应。 我也检查过
var auth = jwt({
secret: process.env.JWT_SECRET,
userProperty: 'payload'
});
如评论中所述,您正在尝试处理有效和无效的令牌。 与下面的代码类似,这应该是可能的。
如果您使用Postman通过以下标头调用此方法,则将收到200 OK,并显示“ OK!”消息。
Authorization: Bearer validJWT
如果您使用邮递员在没有有效JWT的情况下呼叫此邮件,则会收到401 Unauthorized消息,消息为“ invalid token ...”。
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')
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.