我尝试使用Node.js创建登录和身份验证系统。我这样做是这样的:
1)用户通过POST方法使用表单发送他的凭证
2)服务器根据数据库检查这些凭据
3)如果凭证看起来正确,服务器会生成一个jwt令牌并将其返回给用户。
4)从现在开始,用户始终将此令牌放在他的http身份验证标头中,或者至少在尝试访问受限制的页面时
5)当用户尝试访问受限制的页面时,服务器会在继续之前提取令牌并对其进行验证。
现在,我有点陷入困境的是第4步。我仍然希望能够在典型的
中定义我的链接 <a href="/restricted">Click here</a>
有点方式,但要使令牌实际上在http标头中传递。这可能吗?
所以这不是关于api调用,而是请求完整的网页,要求您使用令牌进行身份验证。所以我觉得ajax在这里不合适。
答案 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令牌添加到标题中。