好的。

我认为我无法理解基于令牌的身份验证的基本部分。

我正在使用带有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选项即可访问参数。希望这可以帮助!

09-09 23:33
查看更多