summaryrefslogtreecommitdiffhomepage
path: root/backend/src/main/java/com/blog/web/security
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-27 02:00:57 -0400
committerrealtradam <[email protected]>2024-07-27 02:00:57 -0400
commitde3d80ce3ea20a869d700c3238020d44059de099 (patch)
treeef849326ea4922530990d5dc29cb8ff3532e82fe /backend/src/main/java/com/blog/web/security
parent6b342f97f6a605b7e1fe34584abbbf962ca39b7c (diff)
downloadspring-blog-de3d80ce3ea20a869d700c3238020d44059de099.tar.gz
spring-blog-de3d80ce3ea20a869d700c3238020d44059de099.zip
working login and auth
Diffstat (limited to 'backend/src/main/java/com/blog/web/security')
-rw-r--r--backend/src/main/java/com/blog/web/security/CorsConfig.java21
-rw-r--r--backend/src/main/java/com/blog/web/security/SecurityConfig.java9
2 files changed, 29 insertions, 1 deletions
diff --git a/backend/src/main/java/com/blog/web/security/CorsConfig.java b/backend/src/main/java/com/blog/web/security/CorsConfig.java
new file mode 100644
index 0000000..55db15a
--- /dev/null
+++ b/backend/src/main/java/com/blog/web/security/CorsConfig.java
@@ -0,0 +1,21 @@
+package com.blog.web.security;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig {
+
+ // Configures CORS for the application
+ @Bean
+ public WebMvcConfigurer corsConfigurer() {
+ return new WebMvcConfigurer() {
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**").allowedOrigins("http://localhost:5173").allowedMethods("GET", "POST", "PUT", "DELETE").allowedHeaders("*").allowCredentials(true);
+ }
+ };
+ }
+}
diff --git a/backend/src/main/java/com/blog/web/security/SecurityConfig.java b/backend/src/main/java/com/blog/web/security/SecurityConfig.java
index 2be6909..e562041 100644
--- a/backend/src/main/java/com/blog/web/security/SecurityConfig.java
+++ b/backend/src/main/java/com/blog/web/security/SecurityConfig.java
@@ -2,6 +2,7 @@ package com.blog.web.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -9,6 +10,11 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
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.CorsConfigurationSource;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+
+import java.util.Arrays;
@Configuration
@EnableWebSecurity
@@ -28,11 +34,12 @@ public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
// disabling csrf leaves us vulnerable, in a real production app do not do this
- http.csrf(c -> c.disable()).cors(c -> c.disable()).authorizeHttpRequests(auths -> auths.anyRequest().permitAll()).formLogin(form -> form.loginPage("/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/").loginProcessingUrl("/userlogin").failureUrl("/userlogin?error=true").permitAll()).logout(logout -> logout.logoutUrl("/logout").logoutSuccessUrl("/articles"));
+ http.csrf(c -> c.disable()).cors(Customizer.withDefaults()).authorizeHttpRequests(auths -> auths.anyRequest().permitAll()).formLogin(form -> form.loginPage("/api/v1/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/").loginProcessingUrl("/api/v1/login").failureUrl("/login?error=true").permitAll()).logout(logout -> logout.logoutUrl("/api/v1/logout").logoutSuccessUrl("/articles"));
return http.build();
}
public void configure(AuthenticationManagerBuilder builder) throws Exception {
builder.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
+
}