我正在尝试使用 Node.js 创建一个登录和身份验证系统。我打算这样做:
1) 用户通过 POST 方法使用表单发送他的凭据
2) 服务器根据数据库检查这些凭据
3) 如果凭证看起来正确,服务器会生成一个 jwt token 并将其返回给用户。
4) 从现在开始,用户总是将这个 token 放在他的 http 身份验证 header 中,或者至少在尝试访问受限页面时是这样
5) 当用户尝试访问受限页面时,服务器会提取 token 并在继续之前对其进行验证。
现在我有点卡住的是第 4 步。我希望仍然能够以典型的方式定义我的链接
<a href="/restricted">Click here</a>
一种方式,但要使 token 实际传递到 http header 中。这可能吗?
所以这不是关于 api 调用,而是请求需要您使用 token 对自己进行身份验证的完整网页。所以我认为ajax在这里不合适。
最佳答案
基本上,您不能使用纯 HTML 设置 header 。为此,您需要使用 XHR 发送请求.另一方面,您可能需要考虑将查询标记 添加到您的href 链接中。
首先,使用 localStorage写入token
localStorage.setItem('jsonwebtoken', 'AsdL6-4GffsdXCvS3j');
读取 token 并将其添加到您的 <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'];
关于javascript - 始终传递 http 身份验证 header javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084952/