SPRINGBOOT 获取Authorization Bearer后面的内容
时间: 2024-09-10 11:10:59 浏览: 79
在Spring Boot中,如果你想要获取HTTP请求头中Authorization字段后面的内容,特别是Bearer令牌,你可以在你的控制器方法中使用`@RequestHeader`注解来注入整个Authorization头,或者直接获取令牌部分。以下是具体做法:
1. 使用`@RequestHeader`注解注入整个Authorization头,然后手动解析令牌:
```java
@GetMapping("/api/resource")
public ResponseEntity<String> getResource(@RequestHeader("Authorization") String authHeader) {
// 假设令牌是以Bearer开头的
String token = authHeader.substring("Bearer".length()).trim();
// 现在token变量包含了实际的令牌
return ResponseEntity.ok("Access granted. Token: " + token);
}
```
2. 使用`Authentication`对象直接获取令牌:
```java
@GetMapping("/api/resource")
public ResponseEntity<String> getResource(Authentication authentication) {
// authentication对象包含了当前用户的安全上下文信息
Object credentials = authentication.getCredentials();
if (credentials instanceof String) {
String token = (String) credentials;
return ResponseEntity.ok("Access granted. Token: " + token);
}
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid token");
}
```
在使用第二种方法之前,确保你的安全配置允许直接通过`Authentication`对象获取令牌。这通常是在配置了`BearerTokenAuthenticationFilter`的情况下,或者在自定义的`AuthenticationProvider`中。
阅读全文