@Bean
public SaReactorFilter getSaReactorFilter() {
return new SaReactorFilter()
.addInclude("/**")
.addExclude("/doc.html", "/webjars/**", "/swagger-resources")
.setAuth(obj -> {
SaRequest request = SaHolder.getRequest();
if (log.isDebugEnabled()) {
log.debug(request.getUrl());
}
SaRouterStaff routerStaff = SaRouter.match("/**", "/auth/api/open/**", r -> StpUtil.checkLogin());
if (routerStaff.isHit) {
}
})
.setError(e -> {
if (e instanceof NotLoginException) {
log.error("token失效!");
} else {
e.printStackTrace();
log.error("error!", e);
}
return Result.fail(e.getMessage());
})
.setBeforeAuth(o -> {
this.configCross();
});
}
private void configCross() {
SaHolder.getResponse()
.setHeader("Access-Control-Allow-Origin", "*")
.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
.setHeader("Access-Control-Max-Age", "3600")
.setHeader("Access-Control-Allow-Headers", "*");
SaRouter.match(SaHttpMethod.OPTIONS).free(r -> log.warn("--------OPTIONS预检请求,不做处理")).back();
}
server {
listen 80;
#此处应配置 否则不存在的会跨域
server_name www.xxxx.com xxxx.com;
#应放开对options请求拦截
if ($request_method !~ ^(GET|POST|OPTIONS)$) {
return 403;
}
}