在运行时配置Spring HTTP安全性

时间:2016-11-07 16:05:01

标签: spring spring-security

启动时应用所有http安全性:

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin/**").hasRole("admin")
}

在运行时,我正在尝试添加更多内容......

applicationContext.getBean(WebSecurityConfigurerAdapter).http.authorizeRequests().antMatchers("bla").hasRole("admin")

当执行该行时,它会将其添加到http.authorizeRequests()'但是/ bla仍然可以访问/#34;非管理员"

重新启动服务器时,此更改将生效,因为它正在从数据库加载bla。

如何在不重新启动服务器的情况下立即使安全性生效?

1 个答案:

答案 0 :(得分:0)

你试图在运行时动态地更改一个spring bean,除非你使用像spring-loaded或JRebel这样的工具,否则这很难做到。 有很多关于它的SO:

  1. Update spring beans dynamically. Is it possible?
  2. dynamically change spring beans
  3. Can I replace a Spring bean definition at runtime?
  4. 对于您的用例,最好的方法(在我看来)是使用弹簧配置文件 定义一个带有/ bla授权的bean和另一个没有的bean。然后在不同的配置文件中使用它们。

    请参阅dynamically declare beans at runtime in Spring