好的。
我认为我无法理解基于令牌的身份验证的基本部分。
我正在使用带有express的节点,并且正在使用jwt来阻止访问我的站点(如果您尚未登录)。我可以在登录页面上创建令牌,然后将其发送回客户端并将其存储在localStorage / cookie中。现在,如果用户想导航到另一个页面,他们将输入一个URL并触发一个get请求。
在作为get请求的一部分加载页面之前,如何从localStorage / cookie访问该令牌并将其传递给服务器。我的假设是,应该有一种将令牌传递到服务器的方法-在中间件中进行拦截-如果令牌是合法的,则加载页面,或者如果令牌未正确验证,则重定向到登录页面。
在发布请求时,这将更加简单,因为您可以在页面加载后获取令牌并将其作为ajax调用的一部分传递。
我已经看到了将令牌包含为请求标头(授权承载)的一部分的参考。我认为这仅适用于发布,因为如果您能够将标头参数设置为“全局”,那么为什么还要麻烦在客户端存储在cookie / localStorage中。
如您所见,我对工作流程感到有些困惑。好像我某种程度上要反对谷物。任何清晰度将不胜感激。
最佳答案
如果您使用localStoage
来存储JWT,那么将其传递到服务器的最简单方法是首先使用localStorage.getItem('token')
(或任何您的令牌名称)从localStorage中检索令牌,然后将其插入请求的标头(可以是GET或POST / PUT / DELETE)。依靠您用于处理客户端上的http请求的库,有不同的方法。例如,在jQuery中,您可以在AJAX请求中执行以下操作:
$.ajax({
url: API_URL + "/endpoint",
method: "GET",
beforeSend: function(request){
request.setRequestHeader("Authorization", "BEARER " + localStorage.getItem('token'));
}
})
之后,就像通常一样,在服务器端只需访问
request.header
选项即可访问参数。希望这可以帮助!