优化代码

This commit is contained in:
雨霖铃 2025-08-07 18:51:14 +08:00
parent bda0b64406
commit 707a616bda
2 changed files with 21 additions and 9 deletions

View File

@ -207,13 +207,20 @@
<version>8.0.1.Final</version>
</dependency>
<!-- 公共工具 -->
<!-- 用于JavaBean属性操作库 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<!-- 通用工具类库 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>

View File

@ -12,10 +12,8 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.LockedException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.PostMapping;
@ -23,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.CompletableFuture;
/**
* <p>
* 登录控制层
@ -42,22 +42,27 @@ public class AuthController {
private final AuthenticationManager authenticationManager;
@PostMapping("/login")
public ResponseEntity<ApiResponse<LoginVO>> login(@Valid @RequestBody LoginRequest loginRequest) {
public ApiResponse<LoginVO> login(@Valid @RequestBody LoginRequest loginRequest) {
Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
loginRequest.getUsername(), loginRequest.getPassword()
));
LoginVO loginVO = authService.login(authentication, loginRequest.getRememberMe());
return ResponseEntity.ok().body(ApiResponse.ofStatus(Status.LOGIN_SUCCESS, loginVO));
return ApiResponse.ofStatus(Status.LOGIN_SUCCESS, loginVO);
}
@PostMapping("/logout")
public ApiResponse<?> logout(HttpServletRequest request) {
public ApiResponse<Void> logout(HttpServletRequest request) {
String token = jwtUtil.getTokenFromRequest(request);
if (token == null || token.isBlank()) {
// 1. 统一响应格式全部使用ResponseEntity
if (StringUtils.isBlank(token)) {
return ApiResponse.ofStatus(Status.TOKEN_EXPIRED);
}
authService.logout(token);
// 2. 异步执行登出操作提高性能
CompletableFuture.runAsync(() -> authService.logout(token));
return ApiResponse.ofStatus(Status.SUCCESS);
}