如何从承载令牌中提取令牌字符串?

新手上路,请多包涵

例如,我的标头中有以下 Bearer JWT,提取令牌本身的优雅方法是什么?基本上是 Bearer 之后的任何内容。由于这可能是其他格式,我不想假设它总是以 Bearer 开头。我正在使用 node-jsonwebtoken 并没有找到这种方法。

Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9...TJVA95OrM7E20RMHrHDcEfxjoYZgeFONFh7HgQ

原文由 ycshao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 774
2 个回答

您可以使用空间分割

TokenArray = jwttoken.split(" ");

它将以数组形式存储,其中第二个索引( 1 作为第一个索引是 0) TokenArray[1] 将是令牌并使用

Jwt.decode(TokenArray[1])

解码令牌 JWT 是一种令牌标准,您可以在许多标准中使用,其中最常用的情况之一是用于授权,它也可以通过多种方式完成,但首选的标准方式是在不记名授权标头中发送它您可以使用 refresh_token 代替 bearer token 但您必须将令牌存储在某处,这会以某种方式降低术语 stateless token 的效率。所以承载方法是完全无状态的并且是首选方法

原文由 Aniketh Saha 发布,翻译遵循 CC BY-SA 4.0 许可协议

出于安全原因,您应该确保 Authorization 标头具有预期的内容。你根本不应该接受不以 Bearer 开头的标头,如果你期望它(“Bearer”是 RFC 中的建议,它不是强制性的)“。

 if (authHeader.startsWith("Bearer ")){
     token = authHeader.substring(7, authHeader.length);
} else {
   //Error
}

原文由 pedrofb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题