始终通过http身份验证标头javascript

时间:2018-01-03 20:52:09

标签: javascript node.js http authentication jwt

我尝试使用Node.js创建登录和身份验证系统。我这样做是这样的:

1)用户通过POST方法使用表单发送他的凭证

2)服务器根据数据库检查这些凭据

3)如果凭证看起来正确,服务器会生成一个jwt令牌并将其返回给用户。

4)从现在开始,用户始终将此令牌放在他的http身份验证标头中,或者至少在尝试访问受限制的页面时

5)当用户尝试访问受限制的页面时,服务器会在继续之前提取令牌并对其进行验证。

现在,我有点陷入困境的是第4步。我仍然希望能够在典型的

中定义我的链接
 <a href="/restricted">Click here</a>

有点方式,但要使令牌实际上在http标头中传递。这可能吗?

所以这不是关于api调用,而是请求完整的网页,要求您使用令牌进行身份验证。所以我觉得ajax在这里不合适。

2 个答案:

答案 0 :(得分:1)

基本上,您无法使用纯HTML 设置标头。为此,您需要使用XHR发送请求。另一方面,您可能需要考虑将查询代码添加到 href 链接中。

首先,使用 localStorage

编写令牌
 localStorage.setItem('jsonwebtoken', 'AsdL6-4GffsdXCvS3j');

阅读令牌并将其作为查询参数<a href>

添加到?token
 <a href="/restricted?token=${localStorage.getItem('jsonwebtoken')}">Click here</a>

然后修改服务器以接受与token

一起发送的req.query
 const token = req.query.token || req.headers['X-Access-Token'];

答案 1 :(得分:0)

很遗憾,除了使用XHR or File API之外,我认为没有办法将JWT令牌添加到标题中。