SoFunction
Updated on 2025-04-12

Implementation of springsecurity6 configuration custom path authentication

Spring Security 6, as the latest version, introduces many new features and improvements, such as support for Spring Framework 6, new default password encoder, simpler configuration methods, etc.

springsecurity6 configuration custom path authentication .anyRequest().authenticated() replace with
.anyRequest().access(new CustomAuthorizationManager(myService))

CustomAuthorizationManager

package ;

import ;
import ;
import ;
import ;
import ;
import ;

import ;

public class CustomAuthorizationManager implements AuthorizationManager<RequestAuthorizationContext> {

    private final MyService myService;

    public CustomAuthorizationManager(MyService myService) {
         = myService;
    }

    @Override
    public AuthorizationDecision check(Supplier<Authentication> authentication, RequestAuthorizationContext context) {
        HttpServletRequest request = ();
        Authentication auth = ();
        if (auth == null) {
            return new AuthorizationDecision(false);
        }
        return new AuthorizationDecision((request, auth));
    }
}

MyService

package ;

import ;
import ;

public interface MyService {
    boolean hasPermission(HttpServletRequest request, Authentication authentication);
}

MyServiceImpl

package ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;

import ;
@Service
public class MyserviceImpl implements MyService {
    @Override
    public boolean hasPermission(HttpServletRequest request, Authentication authentication) {
        Object obj = ();
        if (obj instanceof UserDetails) {
            UserDetails userDetails = (UserDetails) obj;
            Collection<? extends GrantedAuthority> authorities = ();
            boolean contains = (new SimpleGrantedAuthority(()));
            return contains;
        }
        return false;
    }
}

package ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

@EnableWebSecurity
@Configuration
public class SecurityConfig{
    @Autowired
    private MyAccessDeniedHandler myAccessDeniedHandler;
//    @Autowired
//    private MyAuthenticationFailureHandler myAuthenticationFailureHandler;
    private final MyService myService;

    public SecurityConfig(MyService myService) {
         = myService;
    }
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    @Bean
    SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

        return  http
                .formLogin(formLogin -&gt; ("/")

                        .loginProcessingUrl("/login")
                        //.successForwardUrl("/toMain")
                        .successHandler(new MyAuthenticationSuccessHandler("/"))
                         .failureUrl("/toError")
                        //.failureHandler(new MyAuthenticationFailureHandler("/"))

                )
                .authorizeHttpRequests(auth -&gt; ("/toError","/","/").permitAll()
                                //Certification is required to access, it is a security certification.  Not JWT's authentication login access                                
                        .requestMatchers("/js/**","/css/**","/img/**").permitAll()

                        .requestMatchers("")
                        .access(new WebExpressionAuthorizationManager("isAuthenticated() and hasIpAddress('192.168.10.6')"))

                        //Other paths require identity authentication//                        .anyRequest().authenticated()
                                .anyRequest().access(new CustomAuthorizationManager(myService))
                )
                .csrf(httpSecurityCsrfConfigurer -&gt; ())
                // Build and return a secure filter chain                .build();
    }

}

This is the end of this article about the implementation of springsecurity6 configuration custom path identity authentication. For more related springsecurity6 custom path identity authentication content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!