Browse Source

Custom inmemory users and Thymeleaf dialect

Daniel Garcia Costa 2 years ago
parent
commit
cc0d553d36

+ 8 - 4
pom.xml

@@ -41,6 +41,14 @@
 		    <groupId>nz.net.ultraq.thymeleaf</groupId>
 		    <artifactId>thymeleaf-layout-dialect</artifactId>
 		</dependency>
+		<dependency>
+		    <groupId>org.thymeleaf.extras</groupId>
+		    <artifactId>thymeleaf-extras-springsecurity6</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-security</artifactId>
+		</dependency>
 		<dependency> 
 		    <groupId>org.springframework.boot</groupId> 
 		    <artifactId>spring-boot-starter-validation</artifactId> 
@@ -54,10 +62,6 @@
 			<artifactId>h2</artifactId>
 			<scope>runtime</scope>
 		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-security</artifactId>
-		</dependency>
 	</dependencies>
 
 	<build>

+ 24 - 1
src/main/java/es/uv/garcosda/config/WebSecurityConfig.java

@@ -3,11 +3,17 @@
  */
 package es.uv.garcosda.config;
 
+import java.util.Arrays;
 
 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.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
 import org.springframework.security.web.SecurityFilterChain;
 
 @Configuration
@@ -15,6 +21,11 @@ import org.springframework.security.web.SecurityFilterChain;
 public class WebSecurityConfig {
 	
 	@Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
+    }
+	
+	@Bean
 	public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
 		
 		http.authorizeHttpRequests()
@@ -24,7 +35,19 @@ public class WebSecurityConfig {
 			.and()
             .formLogin();
 		
-
 		return http.build();
 	}
+	
+	@Bean
+	public UserDetailsService userDetailsService() {
+		return new InMemoryUserDetailsManager(Arrays.asList(
+        		User.withUsername("user")
+					.password(passwordEncoder().encode("1234"))
+					.roles("USER")
+					.build(),
+				User.withUsername("admin")
+					.password(passwordEncoder().encode("1234"))
+					.roles("USER")
+					.build()));
+	}
 }

+ 1 - 0
src/main/resources/templates/messages.html

@@ -22,6 +22,7 @@
 		  <div class="row py-lg-5">
 		    <div class="col-lg-6 col-md-8 mx-auto">
 		      <h1 class="fw-light">Messages</h1>
+		      <p>Welcome <span th:text="${#authentication.name}">Username</span></p>
 		    </div>
 		  </div>
 		</section>