【问题标题】:@EnableGlobalMethodSecurity vs @EnableWebSecurity@EnableGlobalMethodSecurity 与 @EnableWebSecurity
【发布时间】:2015-06-25 14:20:08
【问题描述】:

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

【问题讨论】:

    标签: spring rest spring-security spring-boot


    【解决方案1】:

    EnableWebSecurity 将通过HttpSecurity 提供配置。这是您可以在 xml 配置中使用 <http></http> 标签找到的配置,它允许您根据 url 模式、身份验证端点、处理程序等配置访问...

    EnableGlobalMethodSecurity 为方法提供 AOP 安全性。它提供的一些注释是PreAuthorizePostAuthorize。它还支持JSR-250There are more parameters in the configuration for you

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

    【讨论】:

    • 你能稍微扩展一下最后一段吗?我的需求如何让两者更好地结合在一起?
    • 您可以使用 URL 模式来决定资源是否需要授权,GlobalMethodSecurity 将提供特定用户可以在方法中执行的操作,例如。用户名 John 被授权访问 /foo/maria,但随后 @PreAuthorize 拦截它,因为它有一个 SpEL 告诉用户名必须等于路径变量中的名称。如果您只需要授权或不需要某个 URL EnableWebSecurity 将提供您所需要的一切
    猜你喜欢
    • 2017-10-28
    • 2016-09-08
    • 2014-04-06
    • 2016-02-05
    • 2023-03-19
    • 2015-06-21
    • 2017-11-24
    • 2016-11-01
    • 2016-07-20
    相关资源
    最近更新 更多