springsecurity的登陆用户信息查询接口的校验或hasIpAddress()用法
一般的微服务架构下,auth服务都是单独的只做token颁发和校验的模块,所以当在进行用户登录或其他操作的时候,都需要调用其他的服务进行用户信息的查询和密码比对。
那么其他服务的这个接口的隐蔽性就会受到挑战。
但是发现在springsecurity的权限控制当中,有一个方法很好用:
hasIpAddress()
@Value(value = "${auth.address}")
private String ipAddress;
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(properties.getUrls()).permitAll()
//这里的hasIpAddress好像必须用access表达式写,要不然就会失效
.antMatchers("/base/user/info").access("hasIpAddress('"+ipAddress+"')")
.antMatchers("/base/user/test").access("hasIpAddress('"+ipAddress+"')")
.anyRequest().authenticated()
.and()
.exceptionHandling()
.accessDeniedHandler(new RestfulAccessDeniedHandler())
.authenticationEntryPoint(new RestAuthenticationEntryPoint());
}
通过这种指定auth服务ip访问的方式,对这些接口的保护。