Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SecurityConfig.java
- 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.web.SecurityFilterChain;
- import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
- @Configuration
- public class SecurityConfig {
- @Bean
- public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
- return http
- .csrf().disable()
- .authorizeHttpRequests(auth -> auth
- .requestMatchers("/admin/**").hasRole("ADMIN")
- .anyRequest().authenticated()
- )
- .addFilterBefore(new CustomAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
- .addFilterAfter(new CustomAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class)
- .build();
- }
- }
- // CustomAuthenticationFilter
- import javax.servlet.FilterChain;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import org.springframework.security.core.Authentication;
- import org.springframework.security.core.context.SecurityContextHolder;
- import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
- public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
- @Override
- protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response,
- FilterChain chain, Authentication authResult) throws IOException, ServletException {
- SecurityContextHolder.getContext().setAuthentication(authResult);
- System.out.println("Authentication Successful");
- chain.doFilter(request, response); // Pass to the next filter in the chain
- }
- }
- // CustomAuthorizationFilter
- import javax.servlet.FilterChain;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import org.springframework.security.core.context.SecurityContextHolder;
- import org.springframework.web.filter.OncePerRequestFilter;
- public class CustomAuthorizationFilter extends OncePerRequestFilter {
- @Override
- protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
- throws ServletException, IOException {
- if (SecurityContextHolder.getContext().getAuthentication() != null) {
- System.out.println("Authorization Check Passed");
- }
- filterChain.doFilter(request, response); // Continue to the next filter
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement