【sa-token】 sa-token非 web 上下文无法获取 HttpServletRequest - 实践

news/2025/10/6 22:28:36/文章来源:https://www.cnblogs.com/wzzkaifa/p/19128005

Springboot cloud gateway集成sa-token中报错

cn.dev33.satoken.exception.NotWebContextException: 非 web 上下文无法获取 HttpServletRequest
at cn.dev33.satoken.spring.SpringMVCUtil.getRequest(SpringMVCUtil.java:45) ~[sa-token-spring-boot-starter-1.38.0.jar:?]

官网解释:

在这里插入图片描述
跟着官网解释没有解决内容。

场景分析

集成了gateway,高版本得gateway是非阻塞式得,是拿不到上下文得根本原因。

特性阻塞式 Gateway非阻塞式 Gateway
底层框架Spring MVC,ServletSpring WebFlux,Netty/Undertow
线程模型每个请求一个线程,阻塞 I/O事件循环,少量线程,非阻塞 I/O
并发性能受线程池大小限制,高并发下线程耗尽风险高并发下更高效,适合 I/O 密集型任务
上下文对象HttpServletRequest, HttpServletResponseServerWebExchange
编程模型同步,命令式编程异步,反应式编程(Mono/Flux)
适用场景传统 Web 应用,I/O 操作简单高并发、微服务、I/O 密集型(如 API 网关)
生态兼容性兼容 Servlet 相关库(如 Sa-Token 默认配置)需适配 WebFlux(如 Sa-Token 的 Redis 存储)

解决方案

1:替换原有pom 为

<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-reactor-spring-boot-starter</artifactId>
<version>1.43.0</version>
</dependency>

2:增加全局配置

/**
* [Sa-Token 权限认证] 全局配置类
*/
@Configuration
public
class SaTokenConfigure {
/**
* 注册 [Sa-Token全局过滤器]
*/
@Bean
public SaReactorFilter getSaReactorFilter(
) {
return
new SaReactorFilter(
)
// 指定 [拦截路由]
.addInclude("/**"
) /* 拦截所有path */
// 指定 [放行路由]
.addExclude("/favicon.ico"
)
// 指定[认证函数]: 每次请求执行 
.setAuth(obj ->
{
System.out.println("---------- sa全局认证"
)
;
// SaRouter.match("/test/test", () -> StpUtil.checkLogin());
**加粗样式**
}
)
// 指定[异常处理函数]:每次[认证函数]发生异常时执行此函数 
.setError(e ->
{
System.out.println("---------- sa全局异常 "
)
;
return SaResult.error(e.getMessage(
)
)
;
}
)
;
}
}

3:测试

---------- sa全局认证
SA [INFO] -->: 账号 11111111 登录成功 (loginType=login), 会话凭证 token=27b235ff-efb4-4db6-9f91-b785a9884078

总结

请判断你的项目是 SpringMVC 环境还是 WebFlux 环境:
如果是 SpringMVC 环境就引入 sa-token-spring-boot-starter 依赖
如果是 WebFlux 环境就引入 sa-token-reactor-spring-boot-starter 依赖

如果你还无法分辨你是哪个环境,就看你的 pom.xml 依赖:
如果引入了spring-boot-starter-web就是 SpringMVC 环境。
如果引入了 spring-boot-starter-webflux 就是WebFlux环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cloudflare洛杉矶数据中心维护通知:技术架构与影响解析

本文详细介绍了Cloudflare将于2025年10月8日在洛杉矶数据中心进行的计划性维护,包括维护时间窗口、流量重路由机制、潜在延迟影响,以及针对PNI/CNI客户的重要技术建议和通知订阅方式。维护概览 计划维护时间:2025年…

正规的手机网站建设小程序官方平台

等到花都谢了&#xff0c;你怎么还不开机&#xff1f;这电脑开机真是离奇的慢&#xff0c;有心将它换了&#xff0c;奈何兜里空空。凑合着用又无法忍受这种煎熬。其实你只需要用鼠标点几下就可以不用等待这漫长的开机过程了。高铁&#xff0c;飞机&#xff0c;网络&#xff0c;…

友点企业网站管理系统模板保定市清苑区网站建设

看看如果设定了Rollover中某个状态的效果&#xff0c;则 CA&#xff0e;在动画面板上制作的动画适用于所有的Rollover状态B&#xff0e;动画不能应用在Rollover状态上C&#xff0e;在动画面板上制作的动画仅适用于当前的Rollover状态D&#xff0e;同一动画不能赋予多个Rollover…

沧州建设银行招聘网站电子商务网站建设中

参考 一个叫做Version&#xff0c;一个叫做Build&#xff0c;&#xff08;version是版本号&#xff0c;build是打正式包每次Archive时的都增加的值&#xff09;这两个值都可以在Xcode中选中target&#xff0c;点击“Summary”后看到。 Version在plist文件中的key是“CFBundleSh…

住房和城乡建设部官方网站已前程无忧招聘网

需求&#xff1a;项目中需要使用netty&#xff0c;本地测试的时候使用的是ws&#xff0c;然后要部署到服务器上&#xff0c;使用https连接&#xff0c;https下就不能用ws了&#xff0c;必须升级到wss 1.阿里云申请免费证书 2.保存证书到本地目录 3.修改代码 SslUtil 工具类…

Windows+VSCode搭建小智(xiaozhi)开发环境 - 教程

Windows+VSCode搭建小智(xiaozhi)开发环境 - 教程2025-10-06 22:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

StarTree支持Apache Iceberg扩展湖仓用例

StarTree宣布其云服务全面支持Apache Iceberg,实现直接查询Iceberg表而无需移动或转换底层数据,解决了高并发实时查询的挑战,同时避免了数据重复存储和复杂管道构建。StarTree支持Apache Iceberg以扩展湖仓用例 基于…

偏微分方程的解

偏微分方程的解求未知函数。

如何在 HTML 中添加按钮 - 实践

如何在 HTML 中添加按钮 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

网站备案的链接如何创建电商平台

前言 这篇文章用于记录阿里天池 NLP 入门赛&#xff0c;详细讲解了整个数据处理流程&#xff0c;以及如何从零构建一个模型&#xff0c;适合新手入门。 赛题以新闻数据为赛题数据&#xff0c;数据集报名后可见并可下载。赛题数据为新闻文本&#xff0c;并按照字符级别进行匿名…

jsp网站开发视频教程关键词网站排名软件

来源&#xff1a;中国科学报去年&#xff0c;当一颗美式足球场大小的雪茄形天体Oumuamua进入太阳系时&#xff0c;它并非仅仅让人们第一次看到了一块星际岩石。根据一项新的研究&#xff0c;这也支持了太空岩石通过在遥远的恒星系统之间运送微生物&#xff0c;从而在星际间传播…

Road Trip of the National Day holiday

During the National Day holiday, I went on a road trip with my wife to western Sichuan. We started from Chengdu and passed through Yaan and Luding. On the first day, we visted the "Red Army Flying…

selenium基础 - 教程

selenium基础 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

贵阳网站建设公企业型网站

前言 在之前的博客中&#xff1a; 1.Surface Web —&#xff1e; Deep Web —&#xff1e; Dark Web&#xff0c;我们解释了表层网络、深层网络等的相关概念&#xff1b; 2.Tor浏览器——层层剥开洋葱&#xff0c;我们阐述了Tor的历史和基本工作原理&#xff1b; 3.Tor浏览器…

详细介绍:20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s

详细介绍:20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s2025-10-06 22:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !impo…

兰州网站seo收费交友视频网站建设

61、在Word 2003中&#xff0c;下列关于查找操作的叙述&#xff0c;正确的是 。A、使用查找命令时&#xff0c;可以区分全角和半角字符&#xff0c;但不能区分大小写B、不支持用通配符来描述查找内容C、查找时只能从文档开始处进行D、除了可以按文字的内容进行查找&#xff0c;…

济南海绵城市建设官方网站网络购物消费者行为论文

原创:项道德(daode3056,daode1212) 在量子力学中&#xff0c;许多现象都是统计的结果&#xff0c;基本上用的是正态分布&#xff0c;然而&#xff0c;从本质上思考&#xff0c;应该还存在低阶的分布&#xff0c;标准的正态分布是它的极限&#xff0c;这样一来&#xff0c;或许在…

完整教程:基于单片机的FFT的频谱分析仪设计

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

费马小定理的证明

费马小定理:若 \(p\) 为质数,则 \(x^{p}\equiv x(\text{mod}\ p)\)。特别地,若 \(p\not\mid x\),则 \(x^{p-1}\equiv 1(\text{mod}\ p)\)。 首先,若 \(p\mid x\),则 \(x\equiv 0(\text{mod}\ p)\Leftrightarrow …

中国建设银行员工学习网站网站设计培训

&#x1f4d5;作者简介&#xff1a;热编程的贝贝&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步健身&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于贝贝的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏深度学习、…