From 095ae0ef4cb7ff1bd89fda6ddb45f9765dae99af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=93=86=E5=93=86=E5=92=AF=E5=93=86=E5=93=86=E5=92=AF?= <1754274446@qq.com> Date: Sun, 9 Mar 2025 17:11:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=8A=A0=E5=AF=86=E4=BB=A5=E5=8F=8A=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=88=E6=9A=82=E6=97=B6=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=E6=89=80=E6=9C=89=E8=AF=B7=E6=B1=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/User/pom.xml | 6 ++++ .../example/User/Config/SecurityConfig.java | 31 +++++++++++++++++++ .../Exceptions/InvalidInputException.java | 9 ++++++ .../Exceptions/UserAlreadyExistException.java | 8 +++++ .../com/example/User/Service/UserService.java | 31 +++++++++++++++---- .../example/User/UserApplicationStarter.java | 2 +- .../src/main/resources/application.properties | 6 ++-- 7 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 User/User/src/main/java/com/example/User/Config/SecurityConfig.java create mode 100644 User/User/src/main/java/com/example/User/Exceptions/InvalidInputException.java create mode 100644 User/User/src/main/java/com/example/User/Exceptions/UserAlreadyExistException.java diff --git a/User/User/pom.xml b/User/User/pom.xml index 3c71b39..f46b9bf 100644 --- a/User/User/pom.xml +++ b/User/User/pom.xml @@ -67,6 +67,12 @@ lombok true + + + + org.springframework.boot + spring-boot-starter-security + diff --git a/User/User/src/main/java/com/example/User/Config/SecurityConfig.java b/User/User/src/main/java/com/example/User/Config/SecurityConfig.java new file mode 100644 index 0000000..3c29f66 --- /dev/null +++ b/User/User/src/main/java/com/example/User/Config/SecurityConfig.java @@ -0,0 +1,31 @@ +package com.example.User.Config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class SecurityConfig { + + //暂时配置成允许匿名访问 + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + .csrf(csrf -> csrf.disable()) //禁用CSRF保护 + .authorizeHttpRequests(auth -> auth + .anyRequest().permitAll() //并允许所有请求 + ); + return http.build(); + } + + //密码加密器 + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/User/User/src/main/java/com/example/User/Exceptions/InvalidInputException.java b/User/User/src/main/java/com/example/User/Exceptions/InvalidInputException.java new file mode 100644 index 0000000..19c5473 --- /dev/null +++ b/User/User/src/main/java/com/example/User/Exceptions/InvalidInputException.java @@ -0,0 +1,9 @@ +package com.example.User.Exceptions; + +//处理输入异常 +public class InvalidInputException extends Exception{ + public InvalidInputException(String message){ + super(message); + } +} + diff --git a/User/User/src/main/java/com/example/User/Exceptions/UserAlreadyExistException.java b/User/User/src/main/java/com/example/User/Exceptions/UserAlreadyExistException.java new file mode 100644 index 0000000..e8706cf --- /dev/null +++ b/User/User/src/main/java/com/example/User/Exceptions/UserAlreadyExistException.java @@ -0,0 +1,8 @@ +package com.example.User.Exceptions; + +//处理用户名相同异常 +public class UserAlreadyExistException extends Exception{ + public UserAlreadyExistException(String message){ + super(message); + } +} diff --git a/User/User/src/main/java/com/example/User/Service/UserService.java b/User/User/src/main/java/com/example/User/Service/UserService.java index 0112aa8..8d6ba18 100644 --- a/User/User/src/main/java/com/example/User/Service/UserService.java +++ b/User/User/src/main/java/com/example/User/Service/UserService.java @@ -2,23 +2,42 @@ package com.example.User.Service; import com.example.User.Entity.User; import com.example.User.Mapper.UserMapper; +import com.example.User.Exceptions.*; import org.springframework.stereotype.Service; +import org.springframework.security.crypto.password.PasswordEncoder; + import java.util.List; @Service public class UserService { private final UserMapper userMapper; + private final PasswordEncoder passwordEncoder; - public UserService(UserMapper userMapper) { + public UserService(UserMapper userMapper, PasswordEncoder passwordEncoder) { this.userMapper = userMapper; + this.passwordEncoder = passwordEncoder; } - //用户注册 - public User register(User user) throws Exception { - User existing = userMapper.selectByUsername(user.getUsername()); - if (existing != null) { - throw new Exception("用户已存在"); + // 用户注册 + public User register(User user) throws UserAlreadyExistException, InvalidInputException { + // 输入检测 + if (user.getUsername() == null || user.getUsername().trim().isEmpty()) { + throw new InvalidInputException("用户名不能为空"); + } + if (user.getPassword() == null || user.getPassword().trim().isEmpty()) { + throw new InvalidInputException("密码不能为空"); + } + + // 检测用户名是否存在 + User existUser = userMapper.selectByUsername(user.getUsername()); + if (existUser != null) { + throw new UserAlreadyExistException("用户已存在"); } + + // 密码加密 + user.setPassword(passwordEncoder.encode(user.getPassword())); + + // 插入用户 userMapper.insert(user); return user; } diff --git a/User/User/src/main/java/com/example/User/UserApplicationStarter.java b/User/User/src/main/java/com/example/User/UserApplicationStarter.java index 56080dc..97ce7d4 100644 --- a/User/User/src/main/java/com/example/User/UserApplicationStarter.java +++ b/User/User/src/main/java/com/example/User/UserApplicationStarter.java @@ -11,4 +11,4 @@ public class UserApplicationStarter { SpringApplication.run(UserApplicationStarter.class, args); } -} +} \ No newline at end of file diff --git a/User/User/src/main/resources/application.properties b/User/User/src/main/resources/application.properties index 93d2f16..402cc0b 100644 --- a/User/User/src/main/resources/application.properties +++ b/User/User/src/main/resources/application.properties @@ -1,11 +1,13 @@ spring.application.name=User -# ????? +#mysql spring.datasource.url=jdbc:mysql://localhost:3306/software +#数据库用户名(请更改为自己设置的) spring.datasource.username=root +#数据库密码(同上) spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -# MyBatis ?? +#MyBatis mybatis.mapper-locations=classpath:mapper/*.xml mybatis.configuration.map-underscore-to-camel-case=true \ No newline at end of file