From ed48e052856aa809eec6ee51a0285aa64018667a Mon Sep 17 00:00:00 2001 From: Chaos Date: Mon, 10 Nov 2025 21:41:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(config):=20=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E9=85=8D=E7=BD=AE=E5=92=8CJWT=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改数据库连接地址和密码 - 调整MyBatis Plus主键生成策略为auto - 移除文件上传临时目录及FFmpeg路径配置 -优化登录认证异常处理逻辑 - 完善用户注册与登录服务实现- 更新用户角色关联接口参数命名 --- .../cn/nopj/chaos_api/mapper/UserMapper.java | 4 +-- .../chaos_api/controller/AuthController.java | 19 +++++++----- .../service/impl/AuthServiceImpl.java | 30 +++++++++++++------ .../src/main/resources/application.yaml | 14 ++------- 4 files changed, 38 insertions(+), 29 deletions(-) diff --git a/chaos_api_data/src/main/java/cn/nopj/chaos_api/mapper/UserMapper.java b/chaos_api_data/src/main/java/cn/nopj/chaos_api/mapper/UserMapper.java index d725456..3322d0e 100644 --- a/chaos_api_data/src/main/java/cn/nopj/chaos_api/mapper/UserMapper.java +++ b/chaos_api_data/src/main/java/cn/nopj/chaos_api/mapper/UserMapper.java @@ -35,6 +35,6 @@ public interface UserMapper extends BaseMapper { * @param id 用户id * @param i 角色id */ - @Select("INSERT INTO t_user_role (user_id, role_id) VALUES (#{id}, #{i})") - void insertUserRole(Long id, int i); + @Select("INSERT INTO t_user_role (user_id, role_id) VALUES (#{userId}, #{roleId})") + void insertUserRole(@Param("userId") Long id, @Param("roleId") Long i); } diff --git a/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/AuthController.java b/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/AuthController.java index 7b691ec..975ec55 100644 --- a/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/AuthController.java +++ b/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/AuthController.java @@ -6,6 +6,7 @@ import cn.nopj.chaos_api.model.ApiResult; import cn.nopj.chaos_api.service.AuthService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.authentication.BadCredentialsException; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -44,13 +45,17 @@ public class AuthController { */ @PostMapping("/login") public ApiResult login(@RequestBody LoginRequest loginRequest) { - String token = authService.login(loginRequest.getUsername(), loginRequest.getPassword()); - if (token == null) { - return ApiResult.failed("用户名或密码错误"); + try { + String token = authService.login(loginRequest.getUsername(), loginRequest.getPassword()); + + Map tokenMap = new HashMap<>(); + tokenMap.put("token", token); + tokenMap.put("tokenHead", tokenHead); + return ApiResult.success(tokenMap); + + }catch (BadCredentialsException e){ + return ApiResult.failed(e.getMessage()); } - Map tokenMap = new HashMap<>(); - tokenMap.put("token", token); - tokenMap.put("tokenHead", tokenHead); - return ApiResult.success(tokenMap); + } } diff --git a/chaos_api_web/src/main/java/cn/nopj/chaos_api/service/impl/AuthServiceImpl.java b/chaos_api_web/src/main/java/cn/nopj/chaos_api/service/impl/AuthServiceImpl.java index ef8bdfa..3361adf 100644 --- a/chaos_api_web/src/main/java/cn/nopj/chaos_api/service/impl/AuthServiceImpl.java +++ b/chaos_api_web/src/main/java/cn/nopj/chaos_api/service/impl/AuthServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; @Service public class AuthServiceImpl implements AuthService { + @Autowired private UserMapper userMapper; @@ -42,19 +43,30 @@ public class AuthServiceImpl implements AuthService { user.setPassword(passwordEncoder.encode(registerRequest.getPassword())); userMapper.insert(user); // 你可以在这里为新用户分配默认角色 - userMapper.insertUserRole(user.getId(), 2); + userMapper.insertUserRole(user.getId(), 2L); return user; } @Override public String login(String username, String password) { - // 使用 Spring Security 的 AuthenticationManager 进行用户认证 - Authentication authentication = authenticationManager.authenticate( - new UsernamePasswordAuthenticationToken(username, password) - ); - SecurityContextHolder.getContext().setAuthentication(authentication); - UserDetails userDetails = (UserDetails) authentication.getPrincipal(); - // 生成 JWT - return jwtTokenUtil.generateToken(userDetails); + + Authentication authentication = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken(username, password) + ); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + // 获取用户详情 + + UserDetails userDetails = (UserDetails) authentication.getPrincipal(); + if (!userDetails.isEnabled()){ + return null; + } + // 生成 JWT + return jwtTokenUtil.generateToken(userDetails); + + + + } } \ No newline at end of file diff --git a/chaos_api_web/src/main/resources/application.yaml b/chaos_api_web/src/main/resources/application.yaml index 8513ac6..1f0b2d9 100644 --- a/chaos_api_web/src/main/resources/application.yaml +++ b/chaos_api_web/src/main/resources/application.yaml @@ -6,9 +6,9 @@ spring: name: chaos-api datasource: driver-class-name: org.mariadb.jdbc.Driver - url: jdbc:mariadb://10.91.3.23:3306/chaos?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:mariadb://10.91.3.253:3306/chaos?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false username: chaos - password: zx123456.. + password: fH7NPTeRSSFFicsh type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 @@ -20,20 +20,16 @@ spring: max-file-size: 100GB max-request-size: 100GB - mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: cn.nopj.chaos_api_domain.entity global-config: db-config: - id-type: assign_id + id-type: auto configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - - - jwt: tokenHeader: Authorization tokenHead: Chaos @@ -41,7 +37,3 @@ jwt: expiration: 604800 -file: - upload: - temp-dir: ./chaos/upload - ffmpeg-path: C:\Users\Chaos\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-7.1.1-full_build\bin\ffmpeg.exe \ No newline at end of file