Spring Boot Security - 开放访问/具有受限/管理员访问权限?

时间:2017-03-21 14:48:30

标签: spring-boot spring-security

所以我有一个简单的弹簧启动应用程序,具有开箱即用的安全配置。在我的'dev'个人资料中,我可以使用这些属性打开对所有URL的访问权限

# dev
security.basic.enabled=false
management.security.enabled=false

我可以通过将值更改为

来启用“生产”配置文件中所有网址的身份验证
# production
security.basic.enabled=true
management.security.enabled=true

该应用程序的真正安全要求是它有两个页面

  1. '/'索引页面应公开给所有人。
  2. 应限制'/ admin'页面。
  3. 我从无数other stackoverflow questions in spring-boot-security and spring-security知道我可以使用@EnableWebSecurity覆盖默认的spring-boot安全配置,然后定义自定义规则

    @EnableWebSecurity
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
        protected void configure(HttpSecurity http) throws Exception {
             http.authorizeRequests()....
    
    }
    

    我想知道是不是只有一种更简单的方法来配置spring-boot,而且不需要定制spring-security来实现这个要求?

1 个答案:

答案 0 :(得分:2)

覆盖和配置之间存在差异。通过使用@EnableWebSecurity,您仍然只是按照您希望的方式配置Spring Security。所以回答你的问题,不,没有更简单的方法"。这就是你如何做到这一点并不困难。

@Configuration
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .and()
            .authorizeRequests()
            .antMatchers("/admin/**").authenticated();
    }
}

根据您的要求,或多或少都需要这样的东西。