refactor: 重构安全架构,提取通用安全模块到common-security

- 将JwtAuthenticationFilter、JwtUtil、JwtProperties从auth服务移至common-security模块
- 新增common-security通用安全模块,提供JWT认证、权限验证等核心安全功能
- 重命名SecurityConfiguration为AuthSecurityConfiguration,使用common-security的filter
- 新增JacksonConfiguration配置类,统一JSON序列化配置
- 新增头像更新功能AvatarUpdateRequestDTO
- 移除冗余的UserLoginResponseDTO类
- 更新各服务模块的依赖配置以引入common-security模块
- 新增README.md项目说明文档

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-12 01:54:21 +08:00
parent 8bd56a6001
commit a4575cebd4
47 changed files with 704 additions and 317 deletions

View File

@@ -69,5 +69,13 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-crypto</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -8,7 +8,9 @@ import cn.meowrain.aioj.backend.framework.core.web.Results;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -28,16 +30,20 @@ import java.util.List;
public class AttachmentController {
private final AttachmentService attachmentService;
@Operation(summary = "通用文件上传组件")
@PostMapping("/upload")
public Result<AttachmentDO> uploadFile(@RequestParam("file") MultipartFile file,
public Result<AttachmentDO> uploadFile(@Parameter(description = "上传的文件",
content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE))
@RequestParam("file") MultipartFile file,
@Parameter(description = "文件哈希值")
@RequestParam(value = "hash", required = false) String hash) {
return Results.success(attachmentService.upload(file, hash));
}
@Operation(summary = "哈希是否存在")
@GetMapping("/check")
public Result<HashCheckRespDTO> checkHash(@RequestParam("hash") String hash) {
public Result<HashCheckRespDTO> checkHash(@Parameter(description = "文件哈希值") @RequestParam("hash") String hash) {
return Results.success(attachmentService.checkHash(hash));
}

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

View File

@@ -8,7 +8,7 @@ spring:
max-file-size: 500MB
max-request-size: 500MB
server:
port: 10013
port: 18066
servlet:
context-path: /api
error: