如何使用 nodejs 设置授权标头并表达
Posted
技术标签:
【中文标题】如何使用 nodejs 设置授权标头并表达【英文标题】:How to set authorization headers with nodejs and express 【发布时间】:2016-04-07 22:54:55 【问题描述】:我正在按照本教程使用 nodejs、express、mongoose 和 swig 模板建立一个站点: Authenticate a Node.js API with JSON Web Tokens
在本教程中,作者使用 Postman 在标头中设置令牌。 我已经用谷歌搜索了好几天,以了解如何在我的网站标题中设置 jwt 令牌,但它对我不起作用。
【问题讨论】:
这取决于您的站点与 Express 服务器的通信方式(jQuery、Angular、React、纯 JS 等)。 感谢您的回复。该站点位于 nodejs 和 express 中。我正在为 html 使用 swig 模板。我对nodejs很陌生。我已经创建了登录页面并获得了我的令牌。现在我想将令牌存储在文件夹 /api/ 中所有站点的标题中。我尝试像这样在标头中设置令牌: app.use(function(req, res, next) res.setHeader('token', token; next(); ); 但它不起作用。跨度> 澄清一下,客户端(使用 API 的人)应该发送带有令牌的标头 - 而不是服务器(正如您根据您的问题尝试做的那样)。换句话说,您的网站应该检查标题,但客户应该发送它。希望这会有所帮助。 谢谢阿什利。我明白你的意思。我无法从 nodejs 设置标头,因为它必须来自客户端。这就是为什么我找不到解决方案。这意味着我必须找到一种将令牌放入 swig-template 的方法。对吗? @DanishWoman 在您的问题中添加更多信息!编辑您的问题! 【参考方案1】:如果您希望客户端在其请求标头中包含令牌,您可以使用带有 express 的 cookie 解析器。 (HTML5 Web 存储是另一种选择)。关于 Cookie:
Express 可以设置响应头来告诉客户端“将令牌添加到 cookie”。
一旦客户端使用令牌设置 cookie,令牌将在每个请求的客户端请求标头中。让我们开始烘焙吧
npm install cookie-parser
洒一些
var cookieParser = require('cookie-parser')
app.use(cookieParser())
访问并设置 cookie:
app.use(function (req, res, next)
var cookie = req.cookies.jwtToken;
if (!cookie)
res.cookie('jwtToken', theJwtTokenValue, maxAge: 900000, httpOnly: true );
else
console.log('let's check that this is a valid cookie');
// send cookie along to the validation functions...
next();
);
您可能希望使用 cookie(或最终使用的任何方法)来做这些事情:
设置 cookie 以在用户通过身份验证时保存令牌。 在允许访问受保护的之前检查 cookie 标头值 路线。 如果用户没有他们的令牌,则发回未经授权的状态 当他们尝试访问需要令牌的 api 路由时。【讨论】:
这真的很有帮助。我将令牌设置在 cookie 中,而不是从标头请求令牌,而是从 cookie 请求它。非常感谢!!以上是关于如何使用 nodejs 设置授权标头并表达的主要内容,如果未能解决你的问题,请参考以下文章