springboot 添加过滤器,解决登录时的跨域问题

前几天在做系统登录功能的时候碰到了跨域问题,原本的跨域问题其实已经在shiro过滤器中解决了,但是由于登录是一个不同的url,所以要写一个新的过滤器

新建一个过滤器LoginFilter.java

代码如下

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        //解决跨域问题的代码
        HttpServletRequest httpServletRequest = (HttpServletRequest)req;
        HttpServletResponse httpServletResponse = (HttpServletResponse) res;
        httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
        httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
        httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
        httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
        chain.doFilter(req, httpServletResponse);
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

}

新建一个WebAppConfig.java

代码如下

@Configuration
public class WebAppConfig{
    
    
    @Bean
    public FilterRegistrationBean myFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new LoginFilter());
        registration.addUrlPatterns("/**/**");// 拦截路径
        registration.setName("LoginFilter");// 拦截器名称
        registration.setOrder(1);// 顺序
        return registration;
    }
}
@Configuration注解等价于XML中配置beans
@Bean标注方法等价于XML中配置bean
通过以上就可以解决跨域问题了,记录一下


猜你喜欢

转载自www.cnblogs.com/zhyStudy/p/9466335.html