I have a Spring Boot application where I am using multiple projects with Eureka Server. i am trying to access the homepage though the consumer application with the help of Eureka Server but somehow its asking for authentication.
when i provide the login details it redirects me to http://localhost:8082/WEB-INF/pages/homepage.jsp?continue But when i change the URL after the authorization to http://localhost:8082/homepage it displays the Home page(i tried to change the URL before authentication but it doesn’t work it simply redirects me to default login page of Spring Security)
Sorry if i have any grammatical error.
public class ConsumerController {
private RestTemplate template;
System.out.println("Home page accessed");
public String defaultHome() {
return "redirect:/homepage"; // Redirect root URL to homepage
// Other controller methods...
<code>@Controller
public class ConsumerController {
@Autowired
private RestTemplate template;
@GetMapping("/homepage")
public String home() {
System.out.println("Home page accessed");
return "homepage";
}
@GetMapping("/")
public String defaultHome() {
return "redirect:/homepage"; // Redirect root URL to homepage
}
// Other controller methods...
}
</code>
@Controller
public class ConsumerController {
@Autowired
private RestTemplate template;
@GetMapping("/homepage")
public String home() {
System.out.println("Home page accessed");
return "homepage";
}
@GetMapping("/")
public String defaultHome() {
return "redirect:/homepage"; // Redirect root URL to homepage
}
// Other controller methods...
}
application.properties
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
eureka.client.service-url.default-zone=http://localhost:8761/eureka
eureka.instance.instance-id=${spring.application.name}:${random.value}
eureka.instance.homePageUrl=http://192.168.1.42:8082/homepage
eureka.instance.statusPageUrl=http://192.168.1.42:8082/homepage
eureka.instance.healthCheckUrl=http://localhost:8761/actuator/health
#Other property configurations....
<code>#View Resolver
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
#Sever Port
server.port=8082
eureka.client.service-url.default-zone=http://localhost:8761/eureka
eureka.instance.instance-id=${spring.application.name}:${random.value}
eureka.instance.homePageUrl=http://192.168.1.42:8082/homepage
eureka.instance.statusPageUrl=http://192.168.1.42:8082/homepage
eureka.instance.healthCheckUrl=http://localhost:8761/actuator/health
#Other property configurations....
</code>
#View Resolver
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
#Sever Port
server.port=8082
eureka.client.service-url.default-zone=http://localhost:8761/eureka
eureka.instance.instance-id=${spring.application.name}:${random.value}
eureka.instance.homePageUrl=http://192.168.1.42:8082/homepage
eureka.instance.statusPageUrl=http://192.168.1.42:8082/homepage
eureka.instance.healthCheckUrl=http://localhost:8761/actuator/health
#Other property configurations....
SecurityConfig.class
<code>package com.yo.Trust.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
public class SecurityConfig {
UserDetailsService getUserDetailsService() {
return new CustomUserDetailsService();
BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(getUserDetailsService());
provider.setPasswordEncoder(passwordEncoder());
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests
.requestMatchers("/", "/homepage","/actuator/**").permitAll()
.requestMatchers("/eureka/**").permitAll()
.requestMatchers("/addCustomer").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/allCust").hasRole("MANAGER")
.requestMatchers("/showFindCustomerForm", "/getCustById").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/showCheckBalanceForm", "/checkCurentBalance").hasRole("CUSTOMER")
.requestMatchers("/addEmployee", "/addEmployeeForm").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/getallBankemp").hasRole("MANAGER")
.requestMatchers("/showFindEmpForm", "/findBankEmpById").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/updateEmployee", "/updateEmployeeForm").hasRole("MANAGER")
.requestMatchers("/updateDeptnoForm", "/updateDeptno").hasRole("MANAGER")
.requestMatchers("/loanForm", "/loan").hasRole("EMPLOYEE")
.anyRequest().authenticated()
.logoutRequestMatcher(new AntPathRequestMatcher("/consumer/logout"))
.logoutSuccessUrl("/login?logout")
http.authenticationProvider(authenticationProvider());
<code>package com.yo.Trust.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
UserDetailsService getUserDetailsService() {
return new CustomUserDetailsService();
}
@Bean
BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(getUserDetailsService());
provider.setPasswordEncoder(passwordEncoder());
return provider;
}
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests
.requestMatchers("/", "/homepage","/actuator/**").permitAll()
.requestMatchers("/eureka/**").permitAll()
.requestMatchers("/addCustomer").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/allCust").hasRole("MANAGER")
.requestMatchers("/showFindCustomerForm", "/getCustById").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/showCheckBalanceForm", "/checkCurentBalance").hasRole("CUSTOMER")
.requestMatchers("/addEmployee", "/addEmployeeForm").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/getallBankemp").hasRole("MANAGER")
.requestMatchers("/showFindEmpForm", "/findBankEmpById").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/updateEmployee", "/updateEmployeeForm").hasRole("MANAGER")
.requestMatchers("/updateDeptnoForm", "/updateDeptno").hasRole("MANAGER")
.requestMatchers("/loanForm", "/loan").hasRole("EMPLOYEE")
.anyRequest().authenticated()
)
.formLogin(form -> form
.permitAll()
)
.logout(logout -> logout
.logoutRequestMatcher(new AntPathRequestMatcher("/consumer/logout"))
.logoutSuccessUrl("/login?logout")
.permitAll()
);
http.authenticationProvider(authenticationProvider());
return http.build();
}
}
</code>
package com.yo.Trust.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
UserDetailsService getUserDetailsService() {
return new CustomUserDetailsService();
}
@Bean
BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(getUserDetailsService());
provider.setPasswordEncoder(passwordEncoder());
return provider;
}
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(authorizeRequests -> authorizeRequests
.requestMatchers("/", "/homepage","/actuator/**").permitAll()
.requestMatchers("/eureka/**").permitAll()
.requestMatchers("/addCustomer").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/allCust").hasRole("MANAGER")
.requestMatchers("/showFindCustomerForm", "/getCustById").hasAnyRole("MANAGER", "CUSTOMER")
.requestMatchers("/showCheckBalanceForm", "/checkCurentBalance").hasRole("CUSTOMER")
.requestMatchers("/addEmployee", "/addEmployeeForm").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/getallBankemp").hasRole("MANAGER")
.requestMatchers("/showFindEmpForm", "/findBankEmpById").hasAnyRole("MANAGER", "EMPLOYEE")
.requestMatchers("/updateEmployee", "/updateEmployeeForm").hasRole("MANAGER")
.requestMatchers("/updateDeptnoForm", "/updateDeptno").hasRole("MANAGER")
.requestMatchers("/loanForm", "/loan").hasRole("EMPLOYEE")
.anyRequest().authenticated()
)
.formLogin(form -> form
.permitAll()
)
.logout(logout -> logout
.logoutRequestMatcher(new AntPathRequestMatcher("/consumer/logout"))
.logoutSuccessUrl("/login?logout")
.permitAll()
);
http.authenticationProvider(authenticationProvider());
return http.build();
}
}