在
SaTokenConfigure.java
中設定響應頭即可
/**
* [Sa-Token 權限認證] 配置類
*/
@Configuration
public class SaTokenConfigure {
/**
* 注冊 [sa-token全局過濾器]
*/
@Bean
public SaServletFilter getSaServletFilter() {
return new SaServletFilter()
.addInclude("/**").addExclude("/favicon.ico")
.setAuth(r -> {
// System.out.println("---------- sa全局認證");
})
.setError(e -> {
// System.out.println("---------- sa全局異常 ");
return AjaxJson.getError(e.getMessage());
})
// 前置函數:在每次認證函數之前執行
.setBeforeAuth(r -> {
// ---------- 設定跨域響應頭 ----------
SaHolder.getResponse()
// 允許指定域通路跨域資源
.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", "x-requested-with,satoken");
// 如果是預檢請求,直接傳回
if ("OPTIONS".equals(SaHolder.getRequest().getMethod())) {
System.out.println("=======================浏覽器發來了OPTIONS預檢請求==========");
SaRouter.back();
}
})
;
}
}
WebFlux 環境同理,隻不過把
SaServletFilter
更換為
SaReactorFilter
,其它保持不變