首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express-jwt身份验证中间件不工作

express-jwt身份验证中间件不工作
EN

Stack Overflow用户
提问于 2017-02-01 18:41:27
回答 1查看 2.1K关注 0票数 0

我使用express-jwt进行身份验证,下面是我的代码:

api>routes/index.js

代码语言:javascript
复制
var express = require('express');
var router  = express.Router();

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

当我在index.js中使用auth中间件时

代码语言:javascript
复制
router.post('/locations/:locationId/reviews', auth, ctrlReviews.reviewsCreate);

路由,当想用post-man发布评论数据时,请求去加载,没有响应,但如果从路由请求中移除auth,则给出响应。我也查过了

代码语言:javascript
复制
var auth = jwt({
  secret: process.env.JWT_SECRET,
  userProperty: 'payload'
});
EN

回答 1

Stack Overflow用户

发布于 2017-02-01 19:21:31

正如注释中所提到的,您正在尝试处理有效和无效的令牌。与下面的代码类似,这应该是可能的。

如果你使用Postman使用下面的头来调用它,那么你将收到200OK,并带有一条'OK!‘的消息。

代码语言:javascript
复制
Authorization: Bearer validJWT

如果您在没有有效JWT的情况下使用Postman调用此方法,那么您将收到401 Unauthorized,并显示一条消息“invalid token...”。

代码语言:javascript
复制
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')
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41977650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档