有没有办法使用 express-jwt 访问 nodejs 中不受保护的端点中的 jwt 用户信息?

Is there a way to access jwt user information in unprotected endpoint in nodejs using express-jwt?

我正在使用 express-jwt 来保护我的端点,但我想要一个不受保护的端点在用户登录时显示一些额外的信息。所以我想知道是否有办法访问这样的未受保护端点中的用户信息?

代码如下:

// unprotected endpoint
router.get('/:productId', function(req, res) {
    // some ways to get user info??
    if (req.user.userId) {
        // add some extra fields into returning_data
        // something like purchase history
    }
    res.json({data: returning_data})
}

或者是否有其他方法可以实现此目的?

查看 code for express-jwt 看来,如果您在 express-jwt 设置中为您想要的路由传递选项 credentialsRequired: false,即使令牌不存在,它也应该允许访问。

因此,例如:

var expjwt = require('express-jwt');

app.use('/private', expjwt({ secret: "sssshhhhh!" }), apiRoutesPrivate);
app.use('/public', apiRoutesPublic);
app.use('/publicwithuser', expjwt({ secret: "sssshhhhh!", credentialsRequired: false }), apiRoutesPublicWithUser);

... 其中 apiRoutesPrivate / Public / PublicWithUser 包含每个的相关路由。