如何在我的所有请求查询字符串

时间:2017-08-26 13:21:50

标签: javascript json node.js express jwt

我刚学会了如何使用JSON webtoken。我已经能够在登录时生成JSON webtoken,并设置中间件来验证我的令牌并保护低于JSON验证中间件的路由。

每次我尝试访问受保护的路由时,都会通过在我的GET请求结尾添加:?token=gwt3r7r....来手动包含令牌。 我知道在真正的应用程序中不应该这样。我希望这是动态完成的。

如何动态完成?

3 个答案:

答案 0 :(得分:2)

实际上,在url末尾添加jwt标记并不是一种好习惯。你应该把它作为标题传递。

您可以做的是,您可以将其作为Authorization标题传递,如果您将以下行添加到节点js侧,则可以获取它:

var token = req.headers['Authorization']

答案 1 :(得分:0)

提示:请勿使用查询参数发送令牌,而应使用HTTP标头执行此任务。

从使用nodejs api的前端应用程序,您可以使用axios等软件包向服务器发出请求。

当用户成功登录时,您可以使用

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

为每个将来的请求设置默认令牌,您可以使用此包。

更新#1

在邮递员中,只需按ctrl + s即可将您的请求与令牌一起保存。对于标题,他们有Header presets

  

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

您可以参考this link进一步了解如何充分发挥邮递员的潜力。

答案 2 :(得分:0)

将令牌放入网址不是一个好习惯。

将标记放置为Authorization标头更好,但如果在发送HTTP请求之前每次都必须汇编这样的标头,那将会很繁琐。此外,此解决方案仅适用于Ajax请求,当访问新URL /页面时它不起作用(页面保护) - 如果用户手动访问/secure/my-account页面会发生什么?在页面重定向之前没有机会定义请求标头。

要自动在所有HTTP请求中包含jwt标记,您可以在登录成功时将其作为Cookie添加:

res.cookie('token', newToken);

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

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

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