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

如何在应用程序启动并运行时重新加载WebSecurityConfigurerAdapter的Configure方法

姬向明
2023-03-14

我使用的是spring boot,在spring security中,我们使用的是“WebSecurityConfigurerAdapter”并使用

@Override
    protected void configure(HttpSecurity http) throws Exception {
        AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager(), tokenService(), externalServiceAuthenticator());
        http.addFilterBefore(authenticationFilter, BasicAuthenticationFilter.class)
        .csrf().disable()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and().authorizeRequests().antMatchers(externalServiceCaller.getPrivateEndPoints())
        .hasAnyAuthority(externalServiceCaller.getAllAuthorities()).anyRequest().authenticated()
        .and().authorizeRequests().anyRequest().anonymous()
        .and().exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint())
        .and().exceptionHandling().authenticationEntryPoint(forbiddenEntryPoint());
    }

这对于现有的角色和用户来说很好,但是当我们在运行时(在应用程序启动之后)添加更多的用户和角色时,spring security就无法识别新的角色和新的用户。有没有办法在应用程序启动运行时再次调用上面的方法。

共有1个答案

宫子晋
2023-03-14

Reloadconfigure(HttpSecurityHTTP)在运行时是不可能的,因为它是某种构建器,在应用程序启动时创建Spring Security链的某些部分--如果您想要重新加载该方法,您必须在运行时替换Spring Security链--这不是那么简单和推荐的方法。

如果需要在运行时添加一些用户-实现自定义authentificationprovider

 类似资料:
  • 问题内容: 如何重新启动Java AWT应用程序?我有一个附加了事件处理程序的按钮。我应该使用什么代码来重新启动应用程序? 我想做与应用程序中相同的事情。 问题答案: 当然,可以重新启动Java应用程序。 以下方法显示了一种重新启动Java应用程序的方法: 基本上,它执行以下操作: 查找Java可执行文件(我在这里使用了Java二进制文件,但这取决于您的要求) 查找应用程序(在我的情况下是一个ja

  • 问题内容: 我写了一个Qt应用程序,它将在Linux上运行。它应该在启动时运行。 它应该在每个Linux- Suse,RedHat等上运行。 我应该写什么脚本,放在哪里? 我根本不知道如何编写脚本,因此,如果您附上示例,我将不胜感激。 问题答案: 您需要为您的应用程序创建一个桌面入口文件(请参阅此处),并将其放置在用户目录中。 Window Manager启动时,该目录中的任何桌面条目文件都将被执

  • 我有Java桌面应用程序,运行良好。我可以双击exe或运行jar文件并正常运行。 我想在系统启动时加载此应用程序。如何通过编程实现这一点? 或者,是否有任何工具可以以这样的方式创建exe,即一旦安装,就会在系统启动文件夹中创建快捷方式。 我希望它是系统或代码驱动的,而不是单独将exe放在启动文件夹中。

  • 问题内容: 我有一个需要开发读取TCP / IP套接字的应用程序的要求。我成功地将程序制作为Java程序且没有GUI,这意味着程序一旦运行,便开始侦听Socket并在Netbeans IDE的帮助下获得响应。现在根据我的要求,我必须在Linux系统启动后立即开始执行该程序。 其实我是Java和Linux平台的新手,所以毫无疑问。 我的没有GUI的套接字程序是否可以按我的要求运行? 我知道如何在Li

  • 问题内容: 我有一个包含Java应用程序的JAR文件。如何使它从Windows开始而不需要用户交互? 问题答案: 创建一个.bat文件,并将其放入其中: 然后将.bat文件放入Windows启动文件夹。 还有一件事:使用java和javaw之间是有区别的。虽然在调试应用程序时使用Java更好,但应用程序会打印文本或类似内容,而在不需要时,javaw则更好。为什么?因为java使用控制台显示所有应用

  • 我有一个包含Java应用程序的JAR文件。如何在不需要用户交互的情况下从Windows开始?