springboot用jwt实现token退出登录的代码
时间: 2024-04-30 07:21:49 浏览: 152
springboot+jwt实现token登陆权限认证的实现
5星 · 资源好评率100%
下面是使用 Spring Boot 和 JWT 实现退出登录的示例代码:
```java
@RestController
public class AuthController {
@Autowired
private JwtTokenUtil jwtTokenUtil;
@PostMapping("/logout")
public ResponseEntity<?> logout(HttpServletRequest request) {
// 获取请求头中的 token
String token = request.getHeader("Authorization").substring(7);
// 从 token 中获取用户名
String username = jwtTokenUtil.getUsernameFromToken(token);
// 清除该用户的 token
jwtTokenUtil.removeToken(username);
return ResponseEntity.ok("Logout success");
}
}
```
在上面的代码中,我们定义了一个 `AuthController` 类,其中有一个 `logout` 方法用于处理退出登录的请求。首先,我们从请求头中获取 token,并通过 JWT 工具类 `JwtTokenUtil` 解析出 token 中的用户名。然后,我们调用 `JwtTokenUtil` 的 `removeToken` 方法,将该用户的 token 从缓存中清除。
在 JWT 工具类中,我们需要实现 `removeToken` 方法,如下所示:
```java
@Component
public class JwtTokenUtil {
private static final Map<String, String> tokenMap = new ConcurrentHashMap<>();
// 其他代码省略...
public void removeToken(String username) {
tokenMap.remove(username);
}
}
```
在上面的代码中,我们使用了一个 `ConcurrentHashMap` 来缓存每个用户的 token,因此,我们可以通过调用 `removeToken` 方法,从缓存中清除指定用户的 token。当用户再次访问需要认证的接口时,由于其 token 已被删除,将会返回未授权的错误。
阅读全文