@EnableGlobalMethodSecurity vs @EnableWebSecurity

Chr*_*her 35 rest spring spring-security spring-boot

我正在使用Spring 4开发一个REST API.我想使用Spring Security来保护一些端点,但根据我读过的内容,可以使用@EnableGlobalMethodSecurity或者@EnableWebSecurity.不幸的是,我为这些文档找到的文档并没有清楚地解释它们的作用(或它们如何比较).如果我想根据标准关系数据库中声明的数据和关系来保护Spring REST API的身份验证和授权,那么在Spring 4中实现这一目的的推荐方法是什么?

Joa*_*sta 42

EnableWebSecurity将通过HttpSecurity提供配置,提供您可以<http></http>在xml配置中找到标记的配置,它允许您根据网址模式,身份验证端点,处理程序等配置您的访问权限...

EnableGlobalMethodSecurity提供方法的AOP安全性,它将启用的一些注释PreAuthorize PostAuthorize也支持JSR-250.配置中还有更多参数供您使用

根据您的需求,最好将两者混合使用.使用REST,您可以实现所需的一切@EnableWebSecurity,因为HttpSecurity#antMatchers(HttpMethod,String...)接受对Http方法的控制

  • 您可以使用URL模式来决定资源是否需要授权,"GlobalMethodSecurity"将提供某个用户可以在该方法中执行的操作,例如.用户名John有权访问`/ foo/maria`,但是@ @ PreAuthorize`会截获它,因为它有一个SpEL告诉用户的名字必须等于路径变量的名字.如果您只需要授权某个URL,"EnableWebSecurity"将提供您所需要的一切 (9认同)
  • 您能否在最后一段稍加扩展?我的需求如何使两者更好地融合在一起? (2认同)