有没有办法混合弹簧安全的java配置和@secured注释



我为Web应用程序设置了spring安全性。我想制定全局安全规则(允许所有经过身份验证的用户使用 GET 并仅允许在其他 http 方法上使用角色 ADMIN(,并使用@Secured注释将自定义规则添加到端点。

当我像那个只有角色的用户一样进行配置和@Secured注释时SUPER_USER无法访问该端点

override def configure(http: HttpSecurity): Unit = {
    http
      .sessionManagement()
      .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
      .and()
      .authorizeRequests()
      .antMatchers(HttpMethod.GET, ALL)
      .permitAll()
      .and()
      .authorizeRequests()
      .antMatchers(ALL).hasRole("ADMIN")
  }
@DeleteMapping(value = Array("/{id}"))
@Secured(Array("SUPER_USER"))
def delete(@PathVariable("id") id: String): Unit = {...}

我希望有全局安全规则和自定义规则与@Secured.有什么办法可以做到这一点吗?

您可以使用@PreAuthorize。它将解决您的问题。

@PreAuthorize("hasRole('" + <Your Role> + "')")

最新更新