【发布时间】:2021-01-04 17:53:22
【问题描述】:
我正在研究如何为后续用户请求设置“Authorization: Bearer ...”标头。
例如,我将我的用户保存到数据库中,生成令牌,然后发送带有令牌的欢迎电子邮件:
await user.save()
const token = await user.generateAuthToken()
sendWelcomeEmail(user.email, user.name, token)
res.status(201).send({ user, token })
现在用户有了令牌,他如何在“Authorization: Bearer...”标题中使用它,而不必自己在浏览器中设置标题?
这样我就可以在这里获取令牌了:
const token = req.header('Authorization').replace('Bearer ', '')
【问题讨论】:
-
必须始终添加标题。但是您可以查看的是 cookies。
-
但是如何在用户请求中添加“授权”标头?
-
如果您使用 cookie,则使用稍微不同的机制。如果您使用 cookie,那么您关心的是
req.cookies,而不是req.header。因此,您可以在res.cookies.auth上设置 cookie,然后在将来在req.cookies.auth上检查它。 -
很遗憾,您必须自己动手。但是如果你使用 axios 之类的东西可以设置拦截器,它可以帮助你实现这一点,但是对于 headers,你需要自己添加它们。
-
Headers 被浏览器和后端使用。但是你说得对,Authorization 标头对后端来说更有趣,因为它让后端知道(如果您使用授权标头作为机制)用户已通过身份验证。
标签: javascript node.js express