【发布时间】:2014-10-18 00:00:01
【问题描述】:
首先,我已阅读有关使用 jwt(express-jwt 和 jsonwebtoken)保护 REST API 路由的所有教程,并且它可以很好地用于此目的。
这很好用:
app.use('/api', postApiRoute);
这在某种程度上也有效,我的意思是.. 当我使用它显示带有角度 http 请求调用的网页时,它确实验证了令牌,但是当您添加 expressJwt({secret: secret.secretToken}) 时,您不能再访问 localhost:3000/api/post。 expressJwt({secret: secret.secretToken}) 是这里的问题。
app.use('/api', expressJwt({secret: secret.secretToken}));
app.use('/api', userApiRoute);
我真正需要的是使用 jwt 保护非 json 但 html/文本请求 路由,例如:
app.get('/admin*', expressJwt({secret: secret.secretToken}), function(req, res){
res.render('index', {
//user: req.session.user, <- not sure how to do the equivalent, to extract the user json-object from the express-jwt token?
js: js.renderTags(),
css: css.renderTags()
});
});
.. 不必在 angular/js 中发出 http 请求,而是使用 express 的渲染功能。
我需要这样做,因为我的应用程序有 2 个主服务器路由视图,其中 1 个用于加载管理脚本,1 个用于加载前端(主题)资产。
但是,我无法让 jwt/tokens 与服务器呈现的视图一起使用,只能使用 json api 请求。
我得到的错误是:“UnauthorizedError: No Authorization header was found”
找不到有关(受 jwt 保护的服务器渲染视图,仅服务器端 api 请求和客户端 angular/ajax http 请求)的任何信息,所以我希望我的问题很清楚,并且我不必回退再次使用会话。
【问题讨论】:
-
嘿,你有没有得到任何地方?我也在努力解决这个问题。您无法保护简单的 GET 路由似乎很疯狂。如果知道,我在这里有一个问题,我很乐意接受答案。 stackoverflow.com/questions/31822234/…
标签: node.js view render token jwt