java: 找不到符号 符号: 方法 authenticationManagerBean()

Spring Boot 2.7.0发布,Spring Security 5.7.1版本 Spring Security配置方法,WebSecurityConfiguration已经弃用。

这里我主要是跟b站up三更学习Spring Security,原先配置如下:

package com.lcc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 开发人员: lccZm
 * 时间:2024/3/8
 */
//作用是根据原文,生成一个密文
//   ---------------------- 不用继承WebSecurityConfigurerAdapter接口,已经被弃用-------------------------
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfiguration{
    @Bean
    //把BCryptPasswordEncoder对象注入Spring容器中,SpringSecurity就会使用该PasswordEncoder来进行密码校验
    //注意也可以注入PasswordEncoder,效果是一样的,因为PasswordEncoder是BCry..的父类
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

    @Bean
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
    @Bean
    protected void configure(HttpSecurity http) throws Exception {
        http
                //由于是前后端分离项目,所以要关闭csrf
                .csrf().disable()
                //由于是前后端分离项目,所以session是失效的,我们就不通过Session获取SecurityContext
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                //指定让spring security放行登录接口的规则
                .authorizeRequests()
                // 对于登录接口 anonymous表示允许匿名访问
                .antMatchers("/user/login").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated();
    }


}

会有如下报错:

在这里插入图片描述

解决方案

package com.lcc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.Authentication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

/**
 * 开发人员: lccZm
 * 时间:2024/3/8
 */
//作用是根据原文,生成一个密文
//   ---------------------- 不用继承WebSecurityConfigurerAdapter接口,已经被弃用-------------------------
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig {
    @Bean
    //把BCryptPasswordEncoder对象注入Spring容器中,SpringSecurity就会使用该PasswordEncoder来进行密码校验
    //注意也可以注入PasswordEncoder,效果是一样的,因为PasswordEncoder是BCry..的父类
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

    /**
     * 获取AuthenticationManager(认证管理器),登录时认证使用
     * @param authenticationConfiguration
     * @return
     * @throws Exception
     */
    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
        return authenticationConfiguration.getAuthenticationManager();
    }
    /**
     * 登录拦截放行
     */
    @Bean
    SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                //由于是前后端分离项目,所以要关闭csrf
                .csrf().disable()
                //由于是前后端分离项目,所以session是失效的,我们就不通过Session获取SecurityContext
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                //指定让spring security放行登录接口的规则
                .authorizeRequests()
                // 对于登录接口 anonymous表示允许匿名访问
                .antMatchers("/user/login").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated();
        return httpSecurity.build();
    }
}

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 问题:java不到符号 符号SpringBootApplication。 这可能是因为您忘记导入Spring Boot Application或缺少Spring Boot Starter依赖项。请确保您已正确配置您的项目。 ### 回答2: 在编写Java程序时,有时候你可能会遇到不到符号的错误,比如当你在编译或执行程序时,遇到如下错误信息:java: 不到符号 符号: springbootapplication。 对于这种错误,一般来说,出现这个错误的原因是因为程序中引用了一个不存在或者不到或者方法。在本例中,引用的是SpringBootApplication,提示该不存在,导致编译失败。 解决这个问题的方法一般是检查代码中引用的方法的名称是否正确,是否存在拼写错误、大小写错误、缺少包或jar文件等。如果确实存在缺少的情况,需要通过导入相关包或jar文件来解决。在本例中,我们需要在代码中导入Spring Boot相关的包,例如: import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; 这样就能解决这个问题了。需要注意的是,如果导入的包或jar文件存在版本差异,也有可能导致不到符号的错误。在这种情况下,需要检查版本是否匹配,确保使用的是正确的版本。 总的来说,不到符号的错误可能有多种原因,需要具体情况具体分析。但可以通过仔细检查代码,导入正确的包或jar文件,确保代码的正确性和完整性,最终解决这个问题。 ### 回答3: 首先,这个错误提示的意思是Java编译器在编译程序时无法到一个名为“SpringBootApplication”的。这通常是因为开发人员在程序中使用了Spring Boot框架,但是框架的库文件没有正确加载或者缺少了必要的依赖。 解决这个问题的方法有很多种,下面列举几种可能的解决方案: 1.检查开发环境是否正确配置。开发人员使用Spring Boot框架需要在项目中添加正确的依赖库,可以使用Maven或Gradle等构建工具来自动添加依赖。 2.检查代码中是否正确导入了Spring Boot框架的库,例如@SpringBootApplication,@Controller,@RestController等。开发人员应该在代码中导入正确的来确保程序可以正确编译。 3.检查程序的路径是否正确。Java程序需要正确设置路径才能正确加载库和依赖,开发人员可以检查程序的配置文件和启动脚本来确认路径设置是否正确。 4.检查代码是否正确使用了注解。Spring Boot框架使用大量注解来标记程序的各个组件,开发人员应该正确使用这些注解来确保程序可以正确运行。 5.排除库文件或依赖冲突。有时,开发人员可能会在项目中使用多个库文件或依赖,这些库文件或依赖可能存在冲突,导致编译器无法正确加载所需的库。开发人员应该检查库文件和依赖之间的冲突,并尝试解决这些冲突。 最后,使用Java编程时,这种“不到符号”错误通常是由编译器无法正确加载所需的库文件或依赖导致的。开发人员应该仔细检查代码和配置文件,并尝试使用上述解决方法来解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值