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