节点上的jwt - 客户端如何将令牌传递回服务器

时间:2015-08-09 15:59:15

标签: node.js express jwt

行。

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

我正在使用带有express的节点并且正在使用jwt来阻止访问我的网站如果你还没有登录。我可以在登录页面上创建一个令牌,我可以将它发送回客户端和商店它在localStorage / cookie中。现在,如果用户想要导航到另一个页面,他们将输入一个URL并触发get请求。

如何在将页面作为get请求的一部分加载之前,从localStorage / cookie访问该令牌并将其传递给服务器。我的假设是应该有一种方法将令牌传递给服务器 - 在中间件中拦截它 - 如果令牌是合法的则加载页面,或者如果令牌没有被正确验证则重定向到登录页面。

在帖子请求上,这会更加简单,因为您可以在页面加载后获取令牌并将其作为ajax调用的一部分传递。

我已经看到了将令牌作为请求头(授权承载)的一部分包含的引用。我认为这只适用于帖子,因为如果你能够设置标题参数'全球'那你为什么要在cookie / localStorage中在客户端存储呢。

因此,您可以看到我对工作流程感到有些困惑。好像我不顾一切地反对谷物。任何清晰度都会非常感激。

1 个答案:

答案 0 :(得分:0)

如果您使用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选项即可访问参数,就像通常那样。希望这有帮助!