如何在我的所有请求查询string中包含JSON webtoken

我刚刚学会了如何使用JSON webtoken。 我已经能够在login时生成JSON webtoken,并且还设置了中间件来validation我的令牌并保护JSONvalidation中间件以下的路由。

每次我尝试访问受保护的路由时,都会手动添加令牌: ?token=gwt3r7r....到我的GET请求的末尾。 我知道这不应该是一个真正的应用程序的情况。 我希望这是dynamic完成的。

这如何dynamic地完成?

其实,在url结尾添加jwt token不是好习惯。 你应该把它作为标题。

你可以做的是,你可以传递它作为Authorization标题,并在节点js端你可以得到它,如果你ipmlement下面的行:

var token = req.headers['Authorization']

把标记放在URL中不是一个好的做法。

把token作为Authorization头是比较好的,但是如果在发送HTTP请求之前每次都要组装这样的头,这将是很乏味的。 此外,这个解决scheme只适用于Ajax请求,当访问新的URL / Page(页面保护)时,它不起作用 – 如果用户手动访问/secure/my-account页面会发生什么? 在页面redirect之前没有机会定义请求头。

要将jwt令牌自动包含在所有的HTTP请求中,您可以在login成功时将其作为Cookie:

 res.cookie('token', newToken); 

通过这种方式, token Cookie通过Set-Cookie响应头存储在浏览器中,并自动发送到服务器。

在服务器中,要从每个HTTP请求获取令牌,可以使用以下函数:

 var getTokenFromRequest = function(req) { if (req.cookies.token) { return req.cookies.token; } return null; }; 

提示:不要使用查询参数来发送令牌,而应该使用HTTP头来完成此任务。

从使用nodejs API的前端应用程序,您可以使用像axios这样的软件包向服务器发送请求。

当用户成功login时,可以使用

 axios.defaults.headers.common['Authorization'] = token; 

为每个未来的请求设置默认的令牌,你使用这个包。

更新#1

在邮递员,您可以保存您的请求以供将来使用与令牌只需按ctrl + s 对于标题,他们有Header presets

您可以将常用标题一起保存在标题预设中。 在“标题”标签下,您可以通过从右侧的“预设”下拉列表中select“pipe理预设”来为您的请求添加标题预设。

你可以参考这个链接进一步了解如何充分发挥邮递员的潜力。