我已经完成了大部分项目,但是现在我遇到了一个新问题。我必须从请求中提取访问令牌,该请求将位于Authentication Basic的标头中。这很令人困惑,因为首先我使用一个简单的GET方法,并在请求本身中发送访问令牌,然后使用@RequestParam
将其提取出来。我之前曾问过类似的问题,但这是针对请求本身的简单请求,现在我必须从标题开始。
@GetMapping("/persons")
public String loadPersons(@RequestParam("access_token") String access_token) throws ParseException{
String decode_token = pd.testDecodeJWT(access_token);
String token = pd.jsondata(decode_token);
........................ More Code........................
我想以Authentication Basic格式从请求中获取该令牌。
我已经尝试了一些YouTube教程,但是由于我已经几乎完全完成了我的项目,因此我想对其进行最小的更改,以免出现其他错误。
预先感谢
答案 0 :(得分:0)
要从HTTP标头获取值,可以使用@RequestHeader("headerValue")
。
但是您的问题让我感到困惑的是,您正在使用基本身份验证还是JWT? Basic Authentication仅与用户名和密码有关,与访问令牌无关。它需要一个HTTP头,其格式为:
Authorization: Basic <credentials>
其中<credentials>
是Base64Encode(username:password)
。
另一方面,如果您使用JWT格式的访问令牌,则通常的做法是在“授权”标头中使用Bearer
:
Authorization: Bearer <JWT>
所以无论您使用什么,我的建议是先使用@RequestHeader("Authorization")
获取Authorization
标头的值,然后根据您的实际身份验证机制对值进行解码:
@GetMapping("/persons")
public String loadPersons(@RequestHeader("Authorization") String authHeader) throws ParseException{
//decode authHeader
}