- 在LoginSceneEnum中增加WEB_AI枚举,绑定路径webAi-doLogin
- LoginService扩展WEB_AI登录逻辑:缓存登录态、创建w.tenant.{tenantId}队列并绑定webAiHeadersExchange
- 新增webAiHeadersExchange Bean,交换机名web.ai.headers.exchange
- 用户实体与Service增加web_ai字段及checkWebAILoginRole权限校验
- 提供/webAi-doLogin接口,支持网页端AI独立登录与Token管理
76 lines
2.6 KiB
Java
76 lines
2.6 KiB
Java
package com.yupi.springbootinit.config;
|
|
|
|
import cn.dev33.satoken.fun.strategy.SaCorsHandleFunction;
|
|
import cn.dev33.satoken.interceptor.SaInterceptor;
|
|
import cn.dev33.satoken.router.SaHttpMethod;
|
|
import cn.dev33.satoken.router.SaRouter;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
|
|
@Configuration
|
|
@Slf4j
|
|
public class SaTokenConfigure implements WebMvcConfigurer {
|
|
|
|
|
|
|
|
@Override
|
|
public void addInterceptors(InterceptorRegistry registry) {
|
|
// 注册Sa-Token的拦截器
|
|
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
|
|
.addPathPatterns("/**")
|
|
.excludePathPatterns(getExcludePaths());
|
|
// registry.addInterceptor(new TokenInterceptor())
|
|
// .addPathPatterns("/**")
|
|
// .excludePathPatterns(getExcludePaths());
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取需要放行的路径
|
|
*/
|
|
private String[] getExcludePaths() {
|
|
return new String[]{
|
|
// Swagger & Knife4j 相关
|
|
"/doc.html",
|
|
"/webjars/**",
|
|
"/swagger-resources/**",
|
|
"/v2/api-docs",
|
|
"/v3/api-docs",
|
|
"/v3/api-docs/**",
|
|
"/swagger-ui.html",
|
|
"/swagger-ui/**",
|
|
"/favicon.ico",
|
|
// 你的其他放行路径,例如登录接口
|
|
"/user/doLogin",
|
|
"/tenant/get-id-by-name",
|
|
"/user/bigbrother-doLogin",
|
|
"/user/aiChat-doLogin",
|
|
"/user/aiChat-logout",
|
|
"/user/webAi-doLogin",
|
|
"/error",
|
|
};
|
|
}
|
|
|
|
@Bean
|
|
public SaCorsHandleFunction corsHandle() {
|
|
return (req, res, sto) -> {
|
|
res.
|
|
// 允许指定域访问跨域资源
|
|
setHeader("Access-Control-Allow-Origin", "*")
|
|
// 允许所有请求方式
|
|
.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
|
|
// 有效时间
|
|
.setHeader("Access-Control-Max-Age", "3600")
|
|
// 允许的header参数
|
|
.setHeader("Access-Control-Allow-Headers", "*");
|
|
|
|
// 如果是预检请求,则立即返回到前端
|
|
SaRouter.match(SaHttpMethod.OPTIONS)
|
|
.back();
|
|
};
|
|
}
|
|
} |