我使用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' });当我在index.js中使用auth中间件时
router.post('/locations/:locationId/reviews', auth, ctrlReviews.reviewsCreate);路由,当想用post-man发布评论数据时,请求去加载,没有响应,但如果从路由请求中移除auth,则给出响应。我也查过了
var auth = jwt({
secret: process.env.JWT_SECRET,
userProperty: 'payload'
});发布于 2017-02-01 19:21:31
正如注释中所提到的,您正在尝试处理有效和无效的令牌。与下面的代码类似,这应该是可能的。
如果你使用Postman使用下面的头来调用它,那么你将收到200OK,并带有一条'OK!‘的消息。
Authorization: Bearer validJWT如果您在没有有效JWT的情况下使用Postman调用此方法,那么您将收到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')
})https://stackoverflow.com/questions/41977650
复制相似问题