I am really struggling with getting my code to run
Using Netbeans 23
Here is my code:
package com.htbilling.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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws
Exception {
http
// Disable CSRF for simplicity
.csrf(csrf -> csrf.disable())
// Configure authorization rules
.authorizeHttpRequests(auth -> auth
.requestMatchers("/h2-console/**").permitAll() // Allow H2
Console access
.requestMatchers("/app/login", "/app/css/**", "/app/images/**",
"/app/js/**").permitAll() // Allow login and static resources
.requestMatchers("/app/admin/**").hasRole("ADMIN") // Admin-only
access
.requestMatchers("/app/user/**").hasRole("USER") // User-only
access
.anyRequest().authenticated() // All other requests require
authentication
)
// Enable H2 Console frames
.headers(headers -> headers.frameOptions(frameOptions ->
frameOptions.disable()))
// Configure form login
.formLogin(form -> form
.loginPage("/app/login") // Custom login page
.defaultSuccessUrl("/app/dashboard", true)
.permitAll()
)
// Configure logout
.logout(logout -> logout
.logoutUrl("/app/logout")
.logoutSuccessUrl("/app/login?logout")
.permitAll());
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
The error that I am getting
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'securityFilterChain' defined in class path resource
[com/htbilling/config/SecurityConfig.class]: Failed to instantiate
[org.springframework.security.web.SecurityFilterChain]: Factory method
'securityFilterChain' threw exception with message: This method cannot decide
whether these patterns are Spring MVC patterns or not. If this endpoint is a
Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise,
please use requestMatchers(AntPathRequestMatcher).
This is because there is more than one mappable servlet in your servlet
context: {org.h2.server.web.JakartaWebServlet=[/h2-console/*],
org.springframework.web.servlet.DispatcherServlet=[/]}.
For each MvcRequestMatcher, call MvcRequestMatcher#setServletPath to indicate
the servlet path.
Brian
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists