package com.guo.learningprogresstracker.config; import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.stp.StpUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; @Profile("dev") @Configuration @Slf4j @RequiredArgsConstructor public class WebMvcDevConfig implements WebMvcConfigurer { private final CorsProperties corsProperties; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaInterceptor(handle -> { if ("OPTIONS".equalsIgnoreCase(SaHolder.getRequest().getMethod())) { return; } StpUtil.checkLogin(); })) .addPathPatterns("/**") .excludePathPatterns("/login"); } @Override public void addCorsMappings(CorsRegistry registry) { log.info("允许cors的地址配置:{}", Arrays.toString(corsProperties.getAllowedOrigins())); registry.addMapping("/**") .allowedOrigins(corsProperties.getAllowedOrigins()) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") .allowCredentials(null == corsProperties.getAllowCredentials() || corsProperties.getAllowCredentials()); } }