From 94a7b1bc136d0681515b9d624690762cd971fa65 Mon Sep 17 00:00:00 2001
From: "Chester.X" <2931709855@qq.com>
Date: Tue, 2 Jul 2024 16:40:45 +0800
Subject: [PATCH] 1
---
pom.xml | 23 ++------
.../org/cmh/backend/Config/CorsConfig.java | 8 +--
.../cmh/backend/Config/SecurityConfig.java | 54 +++++++++++++++++
.../controller/AuthenticationController.java | 38 +++++++++++-
.../controller/UserController.java | 50 +++++++++++++---
.../backend/authentication/model/User.java | 43 ++++++--------
.../repository/UserRepository.java | 8 ++-
.../service/AuthenticationService.java | 0
.../authentication/service/UserService.java | 20 +++----
.../service/UserServiceImpl.java | 58 +++++++++++++++++++
src/test/application-test.properties | 7 +++
.../cmh/backend/BackendApplicationTests.java | 7 +--
.../cmh/backend/TestBackendApplication.java | 7 ++-
13 files changed, 245 insertions(+), 78 deletions(-)
create mode 100644 src/main/java/org/cmh/backend/Config/SecurityConfig.java
delete mode 100644 src/main/java/org/cmh/backend/authentication/service/AuthenticationService.java
create mode 100644 src/main/java/org/cmh/backend/authentication/service/UserServiceImpl.java
create mode 100644 src/test/application-test.properties
diff --git a/pom.xml b/pom.xml
index 428b562..809654a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,6 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
@@ -50,10 +50,10 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
-
-
-
+
+ org.springframework.boot
+ spring-boot-starter-security
+
org.springframework.boot
spring-boot-starter-web
@@ -62,27 +62,16 @@
org.springframework.boot
spring-boot-starter-web-services
-
-
-
-
-
org.springframework.session
spring-session-jdbc
-
org.springframework.boot
spring-boot-devtools
runtime
true
-
-
-
-
-
com.mysql
mysql-connector-j
@@ -210,4 +199,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/org/cmh/backend/Config/CorsConfig.java b/src/main/java/org/cmh/backend/Config/CorsConfig.java
index 7852636..d178880 100644
--- a/src/main/java/org/cmh/backend/Config/CorsConfig.java
+++ b/src/main/java/org/cmh/backend/Config/CorsConfig.java
@@ -1,5 +1,4 @@
package org.cmh.backend.Config;
-// CorsConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -14,13 +13,12 @@ public class CorsConfig {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**")
- .allowedOrigins("http://localhost:8080")
+ registry.addMapping("/api/**")
+ .allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);
}
};
}
-}
-
+}
\ No newline at end of file
diff --git a/src/main/java/org/cmh/backend/Config/SecurityConfig.java b/src/main/java/org/cmh/backend/Config/SecurityConfig.java
new file mode 100644
index 0000000..48dd95f
--- /dev/null
+++ b/src/main/java/org/cmh/backend/Config/SecurityConfig.java
@@ -0,0 +1,54 @@
+package org.cmh.backend.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;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+import java.util.List;
+
+@Configuration
+@EnableWebSecurity
+public class SecurityConfig {
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ http
+ .csrf(csrf -> csrf.disable())
+ .cors(cors -> cors.configurationSource(corsConfigurationSource()))
+ .authorizeHttpRequests(authorize -> authorize
+ .requestMatchers("/api/auth/register", "/api/auth/login").permitAll()
+ .anyRequest().authenticated()
+ );
+
+ return http.build();
+ }
+
+ @Bean
+ public UrlBasedCorsConfigurationSource corsConfigurationSource() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ CorsConfiguration config = new CorsConfiguration();
+ config.setAllowCredentials(true);
+ config.setAllowedOrigins(List.of("http://localhost:3000"));
+ config.setAllowedHeaders(List.of("*"));
+ config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS"));
+ source.registerCorsConfiguration("/**", config);
+ return source;
+ }
+
+ @Bean
+ public CorsFilter corsFilter() {
+ return new CorsFilter(corsConfigurationSource());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/cmh/backend/authentication/controller/AuthenticationController.java b/src/main/java/org/cmh/backend/authentication/controller/AuthenticationController.java
index 8ec56df..974eed0 100644
--- a/src/main/java/org/cmh/backend/authentication/controller/AuthenticationController.java
+++ b/src/main/java/org/cmh/backend/authentication/controller/AuthenticationController.java
@@ -1,13 +1,45 @@
package org.cmh.backend.authentication.controller;
+import org.cmh.backend.authentication.model.User;
+import org.cmh.backend.authentication.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
+import java.util.Map;
@RestController
-class AuthenticationController {
+@RequestMapping("/api/auth")
+public class AuthenticationController {
+
+ @Autowired
+ private UserService userService;
+
+ @PostMapping("/register")
+ public User register(@RequestBody User user) {
+ return userService.register(user);
+ }
+
+ @PostMapping("/login")
+ public ResponseEntity