我使用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})
}
或者,如果有其他方法可以实现这一目标?
答案 0 :(得分:2)
查看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包含每个的相关路线。