Spring 安全架构 - 方法安全

除了保护 Web 应用安全外,Spring Security 该提供了将访问规则应用于 Java 方法执行的支持。对于 Spring Security,这只是 “保护资源” 的另一种类型。对于用户而言,这意味着使用相同格式的 ConfigAttribute 字符串(例如角色或表达式)声明式访问规则,但在代码中的不同位置。第一步是启用方法安全性,例如在应用的顶级配置中:

@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SampleSecureApplication {
}

然后我们可以直接修饰方法资源,例如:

@Service
public class MyService {

  @Secured("ROLE_USER")
  public String secure() {
    return "Hello Security";
  }

}

该示例是一种使用安全方法的服务。如果 Spring 创建了这种类型的 @Bean,那么它将被代理,并且在实际执行该方法之前,调用者将必须通过安全拦截器。如果访问被拒绝,则调用者将获得 AccessDeniedException 而不是实际的方法结果。

方法上还可以使用其他注解来强制执行安全性约束,特别是 @PreAuthorize@PostAuthorize,它们可以使你编写分别包含对方法参数和返回值的引用的表达式。

结合使用 Web 安全性和方法安全性并不少见。筛选器链提供了用户体验功能,例如身份验证和重定向到登录页面等,并且方法安全性在更精细的级别上提供了保护。

发布了228 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/stevenchen1989/article/details/105213733