package com.sinata.appointment.config;
|
|
import cn.dev33.satoken.interceptor.SaInterceptor;
|
import cn.dev33.satoken.stp.StpUtil;
|
import jakarta.servlet.http.HttpServletRequest;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.DependsOn;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
@Configuration
|
@DependsOn("miniStpUtilInit")
|
public class SaTokenConfigure implements WebMvcConfigurer {
|
|
@Override
|
public void addInterceptors(InterceptorRegistry registry) {
|
// 小程序域:StpLogic("mini"),与后台 StpUtil 完全隔离(密码仅后台有效)
|
registry.addInterceptor(
|
new SaInterceptor(
|
handle -> {
|
ServletRequestAttributes attributes =
|
(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
HttpServletRequest request =
|
attributes == null ? null : attributes.getRequest();
|
if (request != null && "OPTIONS".equalsIgnoreCase(request.getMethod())) {
|
return;
|
}
|
MiniStpUtil.checkLogin();
|
}))
|
.addPathPatterns("/api/mini/**")
|
.excludePathPatterns(
|
"/api/mini/auth/login",
|
"/api/mini/auth/phone-login",
|
"/api/mini/appointments/shared/detail",
|
"/api/mini/appointments/shared/visitor-codes",
|
"/api/mini/appointments/shared/ticket-code")
|
.order(0);
|
|
// 平台管理端:sys_user 账密
|
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
|
.addPathPatterns("/api/**")
|
.excludePathPatterns("/api/auth/login", "/api/auth/captcha", "/api/mini/**")
|
.order(1);
|
}
|
}
|