使用Node.js中的express-jwt标记保护非api(res.render)路由

时间:2014-08-24 19:48:16

标签: node.js view render token jwt

首先,我已经阅读了有关使用jwt(express-jwt& jsonwebtoken)保护REST API路由的所有教程,并且它可以正常工作。

这很好用:

app.use('/api', postApiRoute);

这也有用,我的意思是..当我使用它来显示带有角度http请求调用的网页时它确实验证了令牌,但是当你添加expressJwt({secret: secret.secretToken})时,你不能只访问{{1不再了。 localhost:3000/api/post是问题所在。

expressJwt({secret: secret.secretToken})

我真正需要的是使用jwt保护非json但html / text请求路由,例如:

app.use('/api', expressJwt({secret: secret.secretToken}));
app.use('/api', userApiRoute);

..无需在angular / js中发出http请求,而是使用express'渲染功能。

我需要这样做,因为我的应用程序有2个主服务器路由视图,因此1加载管理脚本,1加载前端(主题)资产。

但是我无法使用jwt / tokens来处理服务器渲染的视图,只能使用json api请求。

我得到的错误是:" UnauthorizedError:未找到授权标头"

无法找到任何有关(使用jwt保护的服务器渲染视图,只有服务器端api请求和客户端角度/ ajax http请求)的信息,所以我希望我的问题很明确,而且我不需要再回到使用会话。

1 个答案:

答案 0 :(得分:0)

不确定我是否理解正确,但如果您正在谈论条目 html路由(即直接由浏览器加载而不是由角度应用加载),那么您根本无法指示浏览器如何设置授权标头(没有引入其他一些基于重定向的授权流程)。