SpringMVC:如何过滤客户端的IP?

时间:2016-05-20 04:03:04

标签: java spring spring-mvc spring-security spring-boot

我使用spring-boot,我有一个@Controller。为安全起见,我只想接受127.0.0.1的请求(@RequestMapping)。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

选项1。

由于您使用的是spring-boot,我假设您更喜欢使用Spring的自动配置类。使用WebSecurityConfigurerAdapter并在那里配置访问规则。

@EnableWebSecurity
@Configuration
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

      @Override
      protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeUrls()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/**").access("hasIpAddress('127.0.0.1/24')")
            .anyRequest().authenticated();

      }
    }

选项2

如果您使用 tomcat ,则可以在application.properties上自定义Tomcat的代理配置。参考here

server.tomcat.internal-proxies=192\\.168\\.\\d{1,3}\\.\\d{1,3}

答案 1 :(得分:3)

你可以这样做是使用Spring Security的Web Security Expressions。例如:

<http use-expressions="true">
    <intercept-url pattern="/admin*"
        access="hasIpAddress('127.0.0.1/24')"/>
    ...
</http>