summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/blog/web/security/SecurityConfig.java
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-13 01:25:09 -0400
committerrealtradam <[email protected]>2024-07-13 01:25:09 -0400
commitff63bacc647a20c59ce642a4d6b647c3a4290418 (patch)
treeb98142b05a573915359a1eee62b6a45825e27d4e /src/main/java/com/blog/web/security/SecurityConfig.java
parent3ea4cd2f9b3808ef645092816d888de406580e6d (diff)
downloadspring-blog-ff63bacc647a20c59ce642a4d6b647c3a4290418.tar.gz
spring-blog-ff63bacc647a20c59ce642a4d6b647c3a4290418.zip
set up proper login
Diffstat (limited to 'src/main/java/com/blog/web/security/SecurityConfig.java')
-rw-r--r--src/main/java/com/blog/web/security/SecurityConfig.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/com/blog/web/security/SecurityConfig.java b/src/main/java/com/blog/web/security/SecurityConfig.java
new file mode 100644
index 0000000..1471d0f
--- /dev/null
+++ b/src/main/java/com/blog/web/security/SecurityConfig.java
@@ -0,0 +1,38 @@
+package com.blog.web.security;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+
+@Configuration
+@EnableWebSecurity
+@EnableMethodSecurity(securedEnabled = true)
+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
+ .requestMatchers("/login", "/register", "/articles", "/css/**", "/js/**")
+ .permitAll()
+ )
+ .formLogin(form -> form
+ .loginPage("/login")
+ .usernameParameter("username")
+ .passwordParameter("password")
+ .defaultSuccessUrl("/articles")
+ .loginProcessingUrl("/login")
+ .failureUrl("/login?error=true")
+ .permitAll()
+ ).logout(
+ logout -> logout
+ .logoutUrl("/logout")
+ .logoutSuccessUrl("/articles"));
+ return http.build();
+ }
+}