繁体   English   中英

express-jwt身份验证中间件不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM