SpringBoot 使用 Sa
SpringBoot 使用 Sa
SpringBoot 使用 Sa-Token 的全局过滤器解决跨域问题
- 最开始的时候,换了很多种跨域配置都不行,实在想不到什么原因,后来想到之前使用Shiro框架的时候,也需要额外的处理Shiro导致的跨域问题,我马上打开sa-token官网一查,好家伙,果然Sa-Token也需要额外单独配置跨域
- 方式一,跨域禁止cookie传递
- 方式二,官网配置
最开始的时候,换了很多种跨域配置都不行,实在想不到什么原因,后来想到之前使用Shiro框架的时候,也需要额外的处理Shiro导致的跨域问题,我马上打开sa-token官网一查,好家伙,果然Sa-Token也需要额外单独配置跨域
方式一,跨域禁止cookie传递
适合 前后端分离,并且使用 head
头的 token
参数来鉴权的场景
@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfig = new CorsConfiguration();corsConfig.addAllowedOrigin("*"); // 允许所有来源corsConfig.addAllowedMethod("*"); // 允许所有HTTP方法corsConfig.addAllowedHeader("*"); // 允许所有HTTP标头// 项目使用了 sa-token,并且是使用 token 前后端分离的方式,并不是使用 cookies传递用户token,所以要设置为falsecorsConfig.setAllowCredentials(false); // 允许携带身份信息(如Cookies)UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", corsConfig);return new CorsFilter(source);}
}
方式二,官网配置
官网教程:Sa-Token跨域问题
/*** [Sa-Token 权限认证] 配置类 **/
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {/*** 注册 [Sa-Token 全局过滤器] */@Beanpublic SaServletFilter getSaServletFilter() {return new SaServletFilter()// 指定 [拦截路由] 与 [放行路由].addInclude("/**").addExclude("/favicon.ico")// 认证函数: 每次请求执行 .setAuth(obj -> {SaManager.getLog().debug("----- 请求path={} 提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());// ...})// 异常处理函数:每次认证函数发生异常时执行此函数 .setError(e -> {return SaResult.error(e.getMessage());})// 前置函数:在每次认证函数之前执行.setBeforeAuth(obj -> {SaHolder.getResponse()// ---------- 设置跨域响应头 ----------// 允许指定域访问跨域资源.setHeader("Access-Control-Allow-Origin", "*")// 允许所有请求方式.setHeader("Access-Control-Allow-Methods", "*")// 允许的header参数.setHeader("Access-Control-Allow-Headers", "*")// 有效时间.setHeader("Access-Control-Max-Age", "3600");// 如果是预检请求,则立即返回到前端 SaRouter.match(SaHttpMethod.OPTIONS).free(r -> System.out.println("--------OPTIONS预检请求,不做处理")).back();});}}
最新文章
- 小交换机引起的路由环路故障破解
- 如何解决电脑通电自动开机的问题
- 电脑故障速查方法
- Linux 安全
- RT1170的ITM SWO配置,实现printf输出及PC指针的采样分析
- C# 实现动态数组
- unity中查找hierarchy面板对象,包含隐藏对象。
- Centos上删除文件及目录的命令积累
- Alter database open fails with ORA
- SQL必知会(二)
- 上机实验四 图的最小生成树算法设计 西安石油大学数据结构
- 实用篇
- 将随机数设成3407,让你的深度学习模型再涨一个点!文再附3种随机数设定方法
- hadoop 大数据环境配置 rsync命令 hadoop(三)
- 小白看CLIP代码解析
- 面试算法题之合并系列
- MIPI速率计算
- Spring 、SpringMVC 、Struts2之间的区别
- 观察者模式
- 【Vue】过滤器Filters