【问题标题】:set authorization header for susbsequent client requests为后续客户端请求设置授权标头
【发布时间】: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


【解决方案1】:

计算机不会变魔术以斯帖,你添加它,否则没人会做。 一种选择是在 sessionStorage 上设置它,只要你添加它的选项卡没有关闭,如果你关闭它,它就会被删除

【讨论】:

  • 但是使用 sessionStorage,会设置“授权”标头吗?我正在尝试为用户设置它(在用户的浏览器中)。
【解决方案2】:

只要您在邮件中发送纯令牌,用户始终必须包含它。

您可以使用以下方式将 Authentification Header 发送给客户端

res.set('Authorization', 'Bearer '+token)

这应该保留在标题中,直到会话终止

【讨论】:

  • 是的,但是如何在用户请求中包含“授权”标头?
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2016-09-14
相关资源
最近更新 更多