1.创建一个filter
package com.ruoyi.weixin.user.interator; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.weixin.user.domain.vo.UserWeixinInfo; import com.ruoyi.weixin.user.service.impl.WxTokenService; import org.springframework.beans.factory.annotation.Autowired; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class MyWeiXinInterceptor implements Filter { @Autowired private WxTokenService wxtokenService; @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { UserWeixinInfo info = wxtokenService.getUserWeixinInfo((HttpServletRequest)request); if (StringUtils.isNotNull(info) && StringUtils.isNull(SecurityUtils.getAuthentication())) { wxtokenService.verifyToken(info); chain.doFilter(request, response); } return; } @Override public void destroy() { } }
2.配置filter(方法1推荐使用)
package com.ruoyi.weixin.user.config; import com.ruoyi.common.filter.RepeatableFilter; import com.ruoyi.weixin.user.interator.MyWeiXinInterceptor; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class WeiXinFilterConfig { @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean public FilterRegistrationBean weixinUrlFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new MyWeiXinInterceptor()); //要添加的拦截器 registration.addUrlPatterns("/**/lvju/*"); //拦截路径 registration.setName("weixinUrlFilter"); //设置拦截器名称 registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE); //排序 return registration; }
//如果要添加多个拦截器,把上面的方法改一下就行
@SuppressWarnings({ "rawtypes", "unchecked" })
@Bean
public FilterRegistrationBean2 weixinUrlFilterRegistration()
{
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyWeiXinInterceptor2()); //要添加的拦截器
registration.addUrlPatterns("/**/lvju/*"); //拦截路径
registration.setName("weixinUrlFilter2"); //设置拦截器名称
registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE); //排序
return registration;
}
}
3.配置filter(方法2)
@Configuration public class ResourcesConfig implements WebMvcConfigurer { @Autowired private MyWeiXinInterceptor2 myWeiXinInterceptor2; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** 本地文件上传路径 */ registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + RuoYiConfig.getProfile() + "/"); /** swagger配置 */ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } /** * 自定义拦截规则 */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myWeiXinInterceptor2).addPathPatterns("/**/lvju/*"); } /** * 跨域配置 */ @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 设置访问源地址 config.addAllowedOrigin("*"); // 设置访问源请求头 config.addAllowedHeader("*"); // 设置访问源请求方法 config.addAllowedMethod("*"); // 对接口配置跨域设置 source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了