2017-08-26 73 views
1

我刚学会如何使用JSON webtoken。我已经能够在登录时生成JSON webtoken,并设置中间件来验证我的令牌并保护JSON验证中间件以下的路由。如何在我的所有请求查询字符串中包含JSON webtoken

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

这是如何动态完成的?

+1

**提示:**不使用查询参数发送令牌,而是使用HTTP报头,如'授权:' – RaghavGarg

+0

你如何向服务器发送请求? – RaghavGarg

+0

是的,我正在向服务器发送请求。 – OlatunjiYSO

回答

2

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

你可以做的是,你可以把它作为Authorization头和节点JS方面,你可以得到它,如果你ipmlement以下行:

var token = req.headers['Authorization']

0

提示:不要” t使用查询参数发送令牌,相反,您应该为此任务使用HTTP标头。

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

,并在用户成功登录,您可以使用

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

设置默认令牌未来的每一个请求,你让采用这种封装形式。

更新#1

在邮递员,您只需按ctrl + s保存与令牌一起将来使用要求。对于标题,它们有Header presets

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

您可以参考this link做进一步的了解究竟在如何使用邮递员充分发挥其潜力。

0

将标记放入URL中并不是一种好的做法。

将标记放置为Authorization标头会更好,但如果在发送HTTP请求之前每次都必须组装这样的标头,那将很繁琐。此外,这种解决方案仅适用于Ajax请求,当访问新的URL/Page(页面保护)时它不起作用 - 如果用户手动访问/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; 
}; 
相关问题