io.github.resilience4j
@@ -89,6 +90,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ com.baeldung.limitrequests.LimitRequestsApp
+
org.apache.maven.plugins
diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml
index 1b3db18b84..0781a98119 100644
--- a/spring-security-modules/pom.xml
+++ b/spring-security-modules/pom.xml
@@ -17,7 +17,7 @@
spring-security-acl
- spring-security-auth0
+ spring-security-auth0
spring-security-cognito
spring-security-core
spring-security-core-2
diff --git a/spring-security-modules/spring-security-azuread/pom.xml b/spring-security-modules/spring-security-azuread/pom.xml
index b32a1eb16a..c334bbba3e 100644
--- a/spring-security-modules/spring-security-azuread/pom.xml
+++ b/spring-security-modules/spring-security-azuread/pom.xml
@@ -2,14 +2,15 @@
-
4.0.0
+ spring-security-azuread
+
com.baeldung
- spring-security-modules
+ parent-boot-3
+ ../../parent-boot-3
0.0.1-SNAPSHOT
- spring-security-azuread
diff --git a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/Application.java b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/Application.java
index ac36bc1328..ada9b69df4 100644
--- a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/Application.java
+++ b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/Application.java
@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
-
+
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
diff --git a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationConfiguration.java b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationConfiguration.java
index 4d82e930ae..9945ad44fa 100644
--- a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationConfiguration.java
+++ b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationConfiguration.java
@@ -10,9 +10,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
-import org.springframework.security.oauth2.client.registration.ClientRegistration.ProviderDetails;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
-import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.web.SecurityFilterChain;
@@ -22,18 +20,14 @@ import com.baeldung.security.azuread.support.NamedOidcUser;
@Configuration
@EnableConfigurationProperties(JwtAuthorizationProperties.class)
public class JwtAuthorizationConfiguration {
-
-
-
+
@Bean
SecurityFilterChain customJwtSecurityChain(HttpSecurity http, JwtAuthorizationProperties props) throws Exception {
// @formatter:off
return http
- .authorizeRequests( r -> r.anyRequest().authenticated())
- .oauth2Login(oauth2 -> {
- oauth2.userInfoEndpoint(ep ->
- ep.oidcUserService(customOidcUserService(props)));
- })
+ .authorizeHttpRequests( r -> r.anyRequest().authenticated())
+ .oauth2Login(oauth2 -> oauth2.userInfoEndpoint(ep ->
+ ep.oidcUserService(customOidcUserService(props))))
.build();
// @formatter:on
}
@@ -45,28 +39,16 @@ public class JwtAuthorizationConfiguration {
props.getGroupsClaim(),
props.getGroupToAuthorities());
- return (userRequest) -> {
+ return userRequest -> {
OidcUser oidcUser = delegate.loadUser(userRequest);
// Enrich standard authorities with groups
Set mappedAuthorities = new HashSet<>();
mappedAuthorities.addAll(oidcUser.getAuthorities());
mappedAuthorities.addAll(mapper.mapAuthorities(oidcUser));
-
+
oidcUser = new NamedOidcUser(mappedAuthorities, oidcUser.getIdToken(), oidcUser.getUserInfo(),oidcUser.getName());
return oidcUser;
};
}
-
-
-
-// @Bean
-// GrantedAuthoritiesMapper jwtAuthoritiesMapper(JwtAuthorizationProperties props) {
-// return new MappingJwtGrantedAuthoritiesMapper(
-// props.getAuthoritiesPrefix(),
-// props.getGroupsClaim(),
-// props.getGroupToAuthorities());
-// }
-
-
}
diff --git a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationProperties.java b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationProperties.java
index 981be317a3..3520c4aa6d 100644
--- a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationProperties.java
+++ b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/config/JwtAuthorizationProperties.java
@@ -62,7 +62,4 @@ public class JwtAuthorizationProperties {
public void setAuthoritiesPrefix(String authoritiesPrefix) {
this.authoritiesPrefix = authoritiesPrefix;
}
-
-
-
}
diff --git a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/support/GroupsClaimMapper.java b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/support/GroupsClaimMapper.java
index 2487cd9db3..74f92d96d8 100644
--- a/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/support/GroupsClaimMapper.java
+++ b/spring-security-modules/spring-security-azuread/src/main/java/com/baeldung/security/azuread/support/GroupsClaimMapper.java
@@ -10,19 +10,16 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import org.springframework.core.convert.converter.Converter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
import org.springframework.security.oauth2.core.ClaimAccessor;
-import org.springframework.security.oauth2.jwt.Jwt;
/**
* @author Baeldung
*
*/
public class GroupsClaimMapper {
-
+
private final String authoritiesPrefix;
private final String groupsClaim;
private final Map> groupToAuthorities;
diff --git a/spring-security-modules/spring-security-azuread/src/main/resources/application-azuread.yml b/spring-security-modules/spring-security-azuread/src/main/resources/application-azuread.yml
index 5e65c381c8..fec11b84c7 100644
--- a/spring-security-modules/spring-security-azuread/src/main/resources/application-azuread.yml
+++ b/spring-security-modules/spring-security-azuread/src/main/resources/application-azuread.yml
@@ -17,7 +17,7 @@ spring:
- openid
- email
- profile
-
+
# Group mapping
baeldung:
jwt:
diff --git a/spring-security-modules/spring-security-azuread/src/test/java/com/baeldung/security/azuread/ApplicationLiveTest.java b/spring-security-modules/spring-security-azuread/src/test/java/com/baeldung/security/azuread/ApplicationLiveTest.java
index 8c941aa787..2ffa9e9a6f 100644
--- a/spring-security-modules/spring-security-azuread/src/test/java/com/baeldung/security/azuread/ApplicationLiveTest.java
+++ b/spring-security-modules/spring-security-azuread/src/test/java/com/baeldung/security/azuread/ApplicationLiveTest.java
@@ -1,7 +1,6 @@
package com.baeldung.security.azuread;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.*;
import java.net.URI;
@@ -12,6 +11,7 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ActiveProfiles;
@@ -27,9 +27,9 @@ class ApplicationLiveTest {
@Test
void testWhenAccessRootPath_thenRedirectToAzureAD() {
-
- ResponseEntity response = rest.getForEntity("http://localhost:" + port , String.class);
- HttpStatus st = response.getStatusCode();
+
+ ResponseEntity response = rest.getForEntity("http://localhost:" + port , String.class);
+ HttpStatusCode st = response.getStatusCode();
assertThat(st)
.isEqualTo(HttpStatus.FOUND);
diff --git a/spring-security-modules/spring-security-web-mvc/.gitignore b/spring-security-modules/spring-security-web-mvc/.gitignore
index 83c05e60c8..32d2932000 100644
--- a/spring-security-modules/spring-security-web-mvc/.gitignore
+++ b/spring-security-modules/spring-security-web-mvc/.gitignore
@@ -4,7 +4,7 @@
/target
/neoDb*
/data
-/src/main/webapp/WEB-INF/classes
+/src/main/resources/templates/classes
*/META-INF/*
# Packaged files #
diff --git a/spring-security-modules/spring-security-web-mvc/pom.xml b/spring-security-modules/spring-security-web-mvc/pom.xml
index 10dd89f618..857865267c 100644
--- a/spring-security-modules/spring-security-web-mvc/pom.xml
+++ b/spring-security-modules/spring-security-web-mvc/pom.xml
@@ -10,7 +10,8 @@
com.baeldung
- spring-security-modules
+ parent-boot-3
+ ../../parent-boot-3
0.0.1-SNAPSHOT
@@ -38,11 +39,6 @@
org.springframework.boot
spring-boot-starter-tomcat
-
- javax.servlet
- jstl
- runtime
-
io.dropwizard.metrics
@@ -55,9 +51,16 @@
test
- javax.servlet
- javax.servlet-api
- ${javax.version}
+ io.rest-assured
+ rest-assured
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+ org.thymeleaf.extras
+ thymeleaf-extras-springsecurity6
@@ -67,7 +70,7 @@
org.springframework.boot
spring-boot-maven-plugin
- com.baeldung.SpringSessionApplication
+ com.baeldung.session.SpringSessionApplication
JAR
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
index 9138c6fd7b..225f627434 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/clearsitedata/SpringSecurityConfig.java
@@ -1,36 +1,34 @@
package com.baeldung.clearsitedata;
-
import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.CACHE;
import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.COOKIES;
import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.STORAGE;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+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.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.logout.HeaderWriterLogoutHandler;
import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter;
@Configuration
@EnableWebSecurity
-@EnableGlobalMethodSecurity(prePostEnabled = true)
+@EnableMethodSecurity
public class SpringSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
- http.csrf()
- .disable()
- .formLogin()
- .loginPage("/login.html")
- .loginProcessingUrl("/perform_login")
- .defaultSuccessUrl("/homepage.html", true)
- .and()
- .logout()
- .logoutUrl("/baeldung/logout")
- .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(CACHE, COOKIES, STORAGE)));
+ http.csrf(AbstractHttpConfigurer::disable)
+ .formLogin(httpSecurityFormLoginConfigurer ->
+ httpSecurityFormLoginConfigurer.loginPage("/login")
+ .loginProcessingUrl("/perform_login")
+ .defaultSuccessUrl("/homepage", true))
+ .logout(httpSecurityLogoutConfigurer ->
+ httpSecurityLogoutConfigurer.logoutUrl("/baeldung/logout")
+ .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(CACHE, COOKIES, STORAGE))));
return http.build();
}
}
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
index 9d4fc19098..e3e8c54306 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/security/MySimpleUrlAuthenticationSuccessHandler.java
@@ -3,9 +3,9 @@ package com.baeldung.security;
import java.io.IOException;
import java.util.Collection;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -61,9 +61,9 @@ public class MySimpleUrlAuthenticationSuccessHandler implements AuthenticationSu
}
if (isUser) {
- return "/homepage.html";
+ return "/homepage";
} else if (isAdmin) {
- return "/console.html";
+ return "/console";
} else {
throw new IllegalStateException();
}
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
index c30bfa5506..f61e240a05 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java
@@ -3,15 +3,15 @@ package com.baeldung.session.filter;
import java.io.IOException;
import java.util.Arrays;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
public class SessionFilter implements Filter{
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
index 1dfb72eca9..86cdccfa46 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java
@@ -3,6 +3,7 @@ package com.baeldung.session.security.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.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
@@ -11,7 +12,9 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher;
import org.springframework.security.web.session.HttpSessionEventPublisher;
+import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
import com.baeldung.security.MySimpleUrlAuthenticationSuccessHandler;
@@ -35,37 +38,28 @@ public class SecSecurityConfig {
}
@Bean
- public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
- http.csrf()
- .disable()
- .authorizeRequests()
- .antMatchers("/anonymous*")
- .anonymous()
- .antMatchers("/login*", "/invalidSession*", "/sessionExpired*", "/foo/**")
- .permitAll()
- .anyRequest()
- .authenticated()
- .and()
- .formLogin()
- .loginPage("/login.html")
- .loginProcessingUrl("/login")
- .successHandler(successHandler())
- .failureUrl("/login.html?error=true")
- .and()
- .logout()
- .deleteCookies("JSESSIONID")
- .and()
- .rememberMe()
- .key("uniqueAndSecret")
- .tokenValiditySeconds(86400)
- .and()
- .sessionManagement()
- .sessionFixation()
- .migrateSession()
- .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
- .invalidSessionUrl("/invalidSession.html")
- .maximumSessions(2)
- .expiredUrl("/sessionExpired.html");
+ public SecurityFilterChain filterChain(HttpSecurity http, MvcRequestMatcher.Builder mvc) throws Exception {
+ http.csrf(AbstractHttpConfigurer::disable)
+ .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry ->
+ authorizationManagerRequestMatcherRegistry
+ .requestMatchers(mvc.pattern("/anonymous*")).anonymous()
+ .requestMatchers(mvc.pattern("/login*"), mvc.pattern("/invalidSession*"), mvc.pattern("/sessionExpired*"),
+ mvc.pattern("/foo/**")).permitAll()
+ .anyRequest().authenticated())
+ .formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer.loginPage("/login")
+ .loginProcessingUrl("/login")
+ .successHandler(successHandler())
+ .failureUrl("/login?error=true"))
+ .logout(httpSecurityLogoutConfigurer -> httpSecurityLogoutConfigurer.deleteCookies("JSESSIONID"))
+ .rememberMe(httpSecurityRememberMeConfigurer ->
+ httpSecurityRememberMeConfigurer.key("uniqueAndSecret")
+ .tokenValiditySeconds(86400))
+ .sessionManagement(httpSecuritySessionManagementConfigurer ->
+ httpSecuritySessionManagementConfigurer.sessionFixation()
+ .migrateSession().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
+ .invalidSessionUrl("/invalidSession")
+ .maximumSessions(2)
+ .expiredUrl("/sessionExpired"));
return http.build();
}
@@ -83,4 +77,8 @@ public class SecSecurityConfig {
return new BCryptPasswordEncoder();
}
+ @Bean
+ MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) {
+ return new MvcRequestMatcher.Builder(introspector);
+ }
}
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java
index 7c3385dcbd..e8295fc8da 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/FooController.java
@@ -1,6 +1,6 @@
package com.baeldung.session.web;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
index 79f57246a9..1211362d8c 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java
@@ -1,6 +1,6 @@
package com.baeldung.session.web;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
index f85f9f3fb0..5c2bbe01ee 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MainWebAppInitializer.java
@@ -1,14 +1,13 @@
package com.baeldung.session.web.config;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
+import jakarta.servlet.ServletContext;
import org.springframework.web.WebApplicationInitializer;
public class MainWebAppInitializer implements WebApplicationInitializer {
@Override
- public void onStartup(ServletContext sc) throws ServletException {
+ public void onStartup(ServletContext sc) {
sc.getSessionCookieConfig().setHttpOnly(true);
sc.getSessionCookieConfig().setSecure(true);
}
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
index 4db6d07872..885f02798b 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java
@@ -9,13 +9,13 @@ public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(final ViewControllerRegistry registry) {
- registry.addViewController("/anonymous.html");
+ registry.addViewController("/anonymous").setViewName("view/anonymous");
- registry.addViewController("/login.html");
- registry.addViewController("/homepage.html");
- registry.addViewController("/sessionExpired.html");
- registry.addViewController("/invalidSession.html");
- registry.addViewController("/console.html");
+ registry.addViewController("/login").setViewName("view/login");
+ registry.addViewController("/homepage").setViewName("view/homepage");
+ registry.addViewController("/sessionExpired").setViewName("view/sessionExpired");
+ registry.addViewController("/invalidSession").setViewName("view/invalidSession");
+ registry.addViewController("/console").setViewName("view/console");
}
@@ -27,7 +27,8 @@ public class MvcConfig implements WebMvcConfigurer {
// final InternalResourceViewResolver bean = new InternalResourceViewResolver();
//
// bean.setViewClass(JstlView.class);
-// bean.setPrefix("/WEB-INF/view/");
+// bean.setPrefix("/templates/view/");
// bean.setSuffix(".jsp");
+// return bean;
// }
}
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
index fb1a81744e..10baa1c561 100644
--- a/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
+++ b/spring-security-modules/spring-security-web-mvc/src/main/java/com/baeldung/web/SessionListenerWithMetrics.java
@@ -2,8 +2,8 @@ package com.baeldung.web;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
import com.baeldung.monitoring.MetricRegistrySingleton;
import com.codahale.metrics.Counter;
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/mvc-servlet.xml
similarity index 100%
rename from spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/mvc-servlet.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/templates/mvc-servlet.xml
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/anonymous.html b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/anonymous.html
new file mode 100644
index 0000000000..d8ec862901
--- /dev/null
+++ b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/anonymous.html
@@ -0,0 +1,9 @@
+
+
+
+
+ Anonymous page
+
+ To Login
+
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/console.html b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/console.html
new file mode 100644
index 0000000000..4c15ffc1fe
--- /dev/null
+++ b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/console.html
@@ -0,0 +1,20 @@
+
+
+
+
+ This is the landing page for the admin
+
+
+ This text is only visible to a user
+
+
+
+
+ This text is only visible to an admin
+
+
+
+ Logout
+
+
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/homepage.html b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/homepage.html
new file mode 100644
index 0000000000..83a1dff376
--- /dev/null
+++ b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/homepage.html
@@ -0,0 +1,20 @@
+
+
+
+
+ This is the homepage for the user
+
+
+ This text is only visible to a user
+
+
+
+
+ This text is only visible to an admin
+
+
+
+ Logout
+
+
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/invalidSession.html b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/invalidSession.html
new file mode 100644
index 0000000000..06a4761335
--- /dev/null
+++ b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/invalidSession.html
@@ -0,0 +1,9 @@
+
+
+
+
+ Invalid Session Page
+
+ To Login
+
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/login.jsp b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/login.html
similarity index 100%
rename from spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/login.jsp
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/login.html
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/sessionExpired.html b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/sessionExpired.html
new file mode 100644
index 0000000000..94d1286f74
--- /dev/null
+++ b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/view/sessionExpired.html
@@ -0,0 +1,9 @@
+
+
+
+
+ Session Expired Page
+
+ To Login
+
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-mvc/src/main/resources/templates/web.xml
similarity index 100%
rename from spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/web.xml
rename to spring-security-modules/spring-security-web-mvc/src/main/resources/templates/web.xml
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
deleted file mode 100644
index d4e9c0289b..0000000000
--- a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/anonymous.jsp
+++ /dev/null
@@ -1,10 +0,0 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
-
-
-
- Anonymous page
-
- ">To Login
-
-
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/console.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/console.jsp
deleted file mode 100644
index 5a58d8892f..0000000000
--- a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/console.jsp
+++ /dev/null
@@ -1,22 +0,0 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
-
-
-
-
- This is the landing page for the admin
-
-
- This text is only visible to a user
-
-
-
-
- This text is only visible to an admin
-
-
-
- ">Logout
-
-
-
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/homepage.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
deleted file mode 100644
index 2568adec66..0000000000
--- a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/homepage.jsp
+++ /dev/null
@@ -1,22 +0,0 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>
-
-
-
-
- This is the homepage for the user
-
-
- This text is only visible to a user
-
-
-
-
- This text is only visible to an admin
-
-
-
- ">Logout
-
-
-
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
deleted file mode 100644
index e8455ee118..0000000000
--- a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/invalidSession.jsp
+++ /dev/null
@@ -1,10 +0,0 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
-
-
-
- Invalid Session Page
-
- ">To Login
-
-
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp b/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
deleted file mode 100644
index ab0f1c8c63..0000000000
--- a/spring-security-modules/spring-security-web-mvc/src/main/webapp/WEB-INF/view/sessionExpired.jsp
+++ /dev/null
@@ -1,10 +0,0 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
-
-
-
- Session Expired Page
-
- ">To Login
-
-
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
index 30036eea89..22fdd2351d 100644
--- a/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
+++ b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/clearsitedata/LogoutClearSiteDataControllerUnitTest.java
@@ -13,7 +13,7 @@ import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
@ExtendWith(SpringExtension.class)
@WebAppConfiguration
diff --git a/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
index 7d9a03d5f6..90342592f8 100644
--- a/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
+++ b/spring-security-modules/spring-security-web-mvc/src/test/java/com/baeldung/session/SessionConfigurationLiveTest.java
@@ -35,11 +35,11 @@ public class SessionConfigurationLiveTest {
Response resp3 = simpleResponseRequestUsingSessionNotFollowingRedirects(sessionFilter);
assertThat(resp3.getStatusCode()).isEqualTo(HttpStatus.FOUND.value());
- assertThat(resp3.getHeader("Location")).isEqualTo("http://localhost:8080/invalidSession.html");
+ assertThat(resp3.getHeader("Location")).isEqualTo("http://localhost:8080/invalidSession");
}
@Test
- public void givenValidUser_whenLoginMoreThanMaxValidSession_thenRedirectedToExpiredSessionUri() throws Exception {
+ public void givenValidUser_whenLoginMoreThanMaxValidSession_thenRedirectedToExpiredSessionUri() {
SessionFilter sessionFilter = new SessionFilter();
simpleSvcRequestLoggingIn(sessionFilter);
simpleSvcRequestLoggingIn();
@@ -56,7 +56,7 @@ public class SessionConfigurationLiveTest {
.get(SESSION_SVC_URL);
assertThat(resp4.getStatusCode()).isEqualTo(HttpStatus.FOUND.value());
- assertThat(resp4.getHeader("Location")).isEqualTo("http://localhost:8080/sessionExpired.html");
+ assertThat(resp4.getHeader("Location")).isEqualTo("http://localhost:8080/sessionExpired");
}
private static void simpleSvcRequestLoggingIn() {
diff --git a/spring-security-modules/spring-security-web-thymeleaf/pom.xml b/spring-security-modules/spring-security-web-thymeleaf/pom.xml
index dd5f2d7c97..2c8764b88a 100644
--- a/spring-security-modules/spring-security-web-thymeleaf/pom.xml
+++ b/spring-security-modules/spring-security-web-thymeleaf/pom.xml
@@ -11,7 +11,8 @@
com.baeldung
- spring-security-modules
+ parent-boot-3
+ ../../parent-boot-3
0.0.1-SNAPSHOT
@@ -40,8 +41,12 @@