Java 给定IP的Spring security自动授权

Java 给定IP的Spring security自动授权,java,web,spring-security,Java,Web,Spring Security,在Spring安全中,是否有可能(当然可能是Java,所以quesiton是——是否有可能以相对轻松的方式)自动授权来自本地主机(好的,某些给定IP)的所有请求,作为属于给定测试用户的请求 例如,在一些筛选器中,检查IP,如果它来自本地主机,则说类似spring.Authorizaas(“用户”)的话,类似的问题可能会对您有所帮助。根据您的需求,您构建principal并手动将其设置为。在我的案例中,答案如下 @Component public class LocalAuthFilter imp

在Spring安全中,是否有可能(当然可能是Java,所以quesiton是——是否有可能以相对轻松的方式)自动授权来自本地主机(好的,某些给定IP)的所有请求,作为属于给定测试用户的请求


例如,在一些筛选器中,检查IP,如果它来自本地主机,则说类似spring.Authorizaas(“用户”)

的话,类似的问题可能会对您有所帮助。根据您的需求,您构建principal并手动将其设置为。

在我的案例中,答案如下

@Component
public class LocalAuthFilter implements Filter {


    @Autowired
    private UserDetailsService mng;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
        if (("127.0.0.1".equals(req.getRemoteAddr())) &&
                ("anonymousUser".equals(SecurityContextHolder.getContext().getAuthentication().getPrincipal()))) {
            UserDetails userDetails = mng.loadUserByUsername("user"); //my test user
            Authentication auth = new UsernamePasswordAuthenticationToken(
                    userDetails.getUsername(),
                    userDetails.getPassword(),
                    userDetails.getAuthorities());
            SecurityContextHolder.getContext().setAuthentication(auth);
        }
        filterChain.doFilter(req, resp);
    }

    @Override
    public void destroy() {

    }
}

看起来是个解决办法,让我们试试。