如何在 Spring Boot 中使用 Authentication Basic 获取作为 header 发送的访问令牌
How to get the access token sent in as header with Autentication Basic in Springboot
我已经完成了大部分项目,但现在我遇到了一个新问题。我必须从 Authentication Basic 中 header 中的请求中提取访问令牌。这令人困惑,因为首先我使用了一个简单的 GET 方法,并在请求本身中发送访问令牌并使用 @RequestParam
提取它。我之前问过一个类似的问题,但那是针对请求本身的简单请求,现在我必须从 header.
@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........................
我想从身份验证基本格式的请求中获取该令牌。
我尝试了一些 YouTube 教程,但由于我几乎已经完成了我的项目,所以我想对其进行最少的更改,以免弹出更多错误。
提前致谢
要从 HTTP header 获取值,您可以使用 @RequestHeader("headerValue")
.
但是你的问题让我感到困惑的是你使用的是基本身份验证还是 JWT? Basic Authentication 仅与用户名和密码有关,与访问令牌无关。它需要格式为 :
的 HTTP header
Authorization: Basic <credentials>
其中 <credentials>
是 Base64Encode(username:password)
。
另一方面,如果您使用 JWT 格式的访问令牌,通常的做法是在 "Authorization" header 中使用 Bearer
:
Authorization: Bearer <JWT>
所以无论你使用什么,我的建议是先使用@RequestHeader("Authorization")
获取Authorization
header的值。然后根据你的实际身份验证机制解码值:
@GetMapping("/persons")
public String loadPersons(@RequestHeader("Authorization") String authHeader) throws ParseException{
//decode authHeader
}
我已经完成了大部分项目,但现在我遇到了一个新问题。我必须从 Authentication Basic 中 header 中的请求中提取访问令牌。这令人困惑,因为首先我使用了一个简单的 GET 方法,并在请求本身中发送访问令牌并使用 @RequestParam
提取它。我之前问过一个类似的问题,但那是针对请求本身的简单请求,现在我必须从 header.
@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........................
我想从身份验证基本格式的请求中获取该令牌。
我尝试了一些 YouTube 教程,但由于我几乎已经完成了我的项目,所以我想对其进行最少的更改,以免弹出更多错误。
提前致谢
要从 HTTP header 获取值,您可以使用 @RequestHeader("headerValue")
.
但是你的问题让我感到困惑的是你使用的是基本身份验证还是 JWT? Basic Authentication 仅与用户名和密码有关,与访问令牌无关。它需要格式为 :
的 HTTP headerAuthorization: Basic <credentials>
其中 <credentials>
是 Base64Encode(username:password)
。
另一方面,如果您使用 JWT 格式的访问令牌,通常的做法是在 "Authorization" header 中使用 Bearer
:
Authorization: Bearer <JWT>
所以无论你使用什么,我的建议是先使用@RequestHeader("Authorization")
获取Authorization
header的值。然后根据你的实际身份验证机制解码值:
@GetMapping("/persons")
public String loadPersons(@RequestHeader("Authorization") String authHeader) throws ParseException{
//decode authHeader
}