有什么方法可以混合使用spring-security java配置和@secured注释吗?

时间:2019-04-10 05:50:36

标签: java spring scala spring-security spring-annotations

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

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

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的全局安全性规则和自定义规则。有什么办法吗?

1 个答案:

答案 0 :(得分:-2)

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

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