当前位置: 首页 > 知识库问答 >
问题:

WebSecurity配置:添加属性需要Bean?

颛孙飞
2023-03-14

出于某种原因,每当我尝试将属性添加到此类时,应用程序就会中断。无法确定需要配置哪个构造函数。

    @Configuration
    @AllArgsConstructor
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        private final AppUserService appUserService;
        private final BCryptPasswordEncoder bCryptPasswordEncoder;
    
        //without this line it works
        private String newProp;
    
        private FacebookConnectionSignup facebookConnectionSignup;
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.authenticationProvider(daoAuthenticationProvider());
        }
    
        @Bean
        public DaoAuthenticationProvider daoAuthenticationProvider() {
            DaoAuthenticationProvider provider =
                    new DaoAuthenticationProvider();
            provider.setPasswordEncoder(bCryptPasswordEncoder);
            provider.setUserDetailsService(appUserService);
            return provider;
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .csrf().disable()
                    .authorizeRequests()
                    .antMatchers("/api/v*/registration/**")
                    .permitAll()
                    .anyRequest()
                    .authenticated().and()
                    .formLogin();
        }
        @Bean
        public ProviderSignInController providerSignInController() {
            ConnectionFactoryLocator connectionFactoryLocator =
                    connectionFactoryLocator();
            UsersConnectionRepository usersConnectionRepository =
                    getUsersConnectionRepository(connectionFactoryLocator);
            ((InMemoryUsersConnectionRepository) usersConnectionRepository)
                    .setConnectionSignUp(facebookConnectionSignup);
            return new ProviderSignInController(connectionFactoryLocator,
                    usersConnectionRepository, new FacebookSignInAdapter());
        }
    
        private ConnectionFactoryLocator connectionFactoryLocator() {
            ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
            registry.addConnectionFactory(new FacebookConnectionFactory("appId", "appSecret"));
            return registry;
        }
    
        private UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator
                                                                               connectionFactoryLocator) {
            return new InMemoryUsersConnectionRepository(connectionFactoryLocator);
        }
    }

启动应用程序上下文时出错。要显示条件,请报告启用“调试”后重新运行应用程序。2021-12-17 00:40:17.874错误21160 --- [ main]o. s. b. d.日志失败分析记者:

应用程序启动失败

说明:

com.example.demo.security.config.WebSecurityConfig中构造函数的参数2需要一个类型为“java.lang.字符串”的bean,但找不到。

行动:

考虑定义“java”类型的bean。配置中的lang.String。

进程结束,退出代码1

共有1个答案

东方和志
2023-03-14

使用RequiredArgsConstructor注释而不是AllArgsConstructor,并最终确定此属性:

private final FacebookConnectionSignup facebookConnectionSignup;
 类似资料:
  • 我正在努力定制从OIM到OUD服务器作为目标资源的身份配置。 我已经能够使用默认属性执行配置,用户身份创建成功,并且能够在Spring web应用程序中使用它进行身份验证。现在我想添加基于用户位置的授权。用户的位置在OIM,所以我想将其提供给LDAP服务器,以避免手动编辑每个身份。 我已经搜索了很多,但我无法向预配过程添加其他属性,到目前为止,我只是修改了 OIM 中的协调和预配查找,但这还不够,

  • 今天我对封装感兴趣,对此我有一个基本问题。我理解为什么需要为私有字段添加setter和getter方法。但我看到为public int编写,字符串是其他的setter和getter。为什么我们需要为公共字段添加属性?我已经可以从任何地方访问公共变量。你怎么能用塞特和盖特控制我?谢谢

  • 简介 Apache ShardingSphere 提供属性配置的方式配置系统级配置。 配置项说明 名称 数据类型 说明 默认值 sql-show (?) boolean 是否在日志中打印 SQL。 打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。 如果开启配置,日志将使用 Topic ShardingSphere-SQL,日志级别是 I

  • 简介 Apache ShardingSphere 提供属性配置的方式配置系统级配置。 配置项说明 名称 数据类型 说明 默认值 sql-show (?) boolean 是否在日志中打印 SQL。 打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。 如果开启配置,日志将使用 Topic ShardingSphere-SQL,日志级别是 I

  • 这是我的配置类。 这是我的出版商课 我正在犯错误。 2020-10-04 14:28:24.628错误17008 --- [ 127.0.0.1:5672]o. s. a. r. c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法