Spring Boot Sping Boot Security配置抛出UnsatisfiedDependencyException:通过方法“setFilterChains”表示的不满足的依赖关系

wgeznvg7  于 2023-10-16  发布在  Spring
关注(0)|答案(1)|浏览(153)

我目前正在开发一个Web应用程序,我在Sping Boot 中为后端编写Java程序。我正在尝试配置Spring Security,以便只有拥有JWT-Token的用户才能访问任何端点。我甚至不确定这是否是问题所在,但每次启动应用程序时,我都会收到以下错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'securityFilterChain' defined in class path resource [com/myapp/backend/config/SecurityConfiguration.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'securityFilterChain' threw exception with message: Cannot invoke "Object.getClass()" because "filter" is null

编译器将以下代码标记为已弃用:

package com.myapp.backend.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import jakarta.servlet.Filter;
import lombok.RequiredArgsConstructor;

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfiguration {

    private AuthenticationProvider authenticationProvider;
    private JwtAuthenticationFilter jwtAuthFilter;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
        .csrf()
        .disable()
        .authorizeHttpRequests()
        .requestMatchers("/auth/**")
        .permitAll()
        .anyRequest()
        .authenticated()
        .and()
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and()
        .authenticationProvider(authenticationProvider)
        .addFilterBefore(jwtAuthFilter,  UsernamePasswordAuthenticationFilter.class);
                
        return http.build();
    }
}
06odsfpq

06odsfpq1#

M. Deinum回答了这个问题。问题出在兴奋剂注射上。在这个场景中,这两个属性都必须是final属性,因为我使用的是带有@ RolledArgsConstructor的Lombok

相关问题