当前位置: 首页 > article >正文

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

Springboot cloud gateway集成sa-token中报错

cn.dev33.satoken.exception.NotWebContextException: 非 web 上下文无法获取 HttpServletRequestat 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全局过滤器] */@Beanpublic 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环境。

相关文章:

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

Springboot cloud gateway集成sa-token中报错 cn.dev33.satoken.exception.NotWebContextException: 非 web 上下文无法获取 HttpServletRequestat cn.dev33.satoken.spring.SpringMVCUtil.getRequest(SpringMVCUtil.java:45) ~[sa-token-spring-boot-starter-1.38.0.jar:?]官…...

论爱情《态度》

我犹记得&#xff0c;当吴军的《态度》到手之后&#xff0c;从中间翻开的第一页&#xff0c;便是此。 “合适的人&#xff0c;会让你看到&#xff0c;和得到全世界” -- 第22封 其实在我初中、高中的时候&#xff0c;我便产生一个问题&#xff0c;为什么学校要禁止谈恋爱。 …...

多台电脑共用一个ip地址可以吗?会怎么样

在互联网使用日益普及的今天&#xff0c;许多人都面临着多台设备共享网络的需求。一个常见的问题随之而来&#xff1a;多台电脑共用一个IP地址可以吗&#xff1f;这样做会带来哪些影响&#xff1f;本文将深入探讨这一话题。 一、多台电脑共用一个‌IP地址可以吗&#xff1f; 多…...

线程(上)【Linux操作系统】

文章目录 线程概念及其相关知识线程的概念及一些重要认识重要认识Linux中线程的实现Linux中的被调度的执行流是被task_struct描述的 线程是如何瓜分进程的代码和数据的&#xff1f;对于数据&#xff1a;对于代码&#xff1a; 线程的优点线程的缺点线程调度细节调度&#xff1a;…...

FPGA中的“BPI“指什么

在FPGA&#xff08;现场可编程门阵列&#xff09;中&#xff0c;BPI 的全称是 “Byte Peripheral Interface” 或 “Bank Parallel Interface”&#xff0c;具体指一种 并行NOR闪存配置接口&#xff0c;主要用于FPGA的配置&#xff08;Configuration&#xff09;过程。以下是BP…...

Splunk Validated Architecture (SVA):构建企业级可观测性与安全的基石

Splunk Validated Architecture (SVA) 是 Splunk 官方提供的一套经过严格测试、性能验证和最佳实践指导的参考架构蓝图。它并非单一固定方案&#xff0c;而是根据企业数据规模、性能需求、高可用性目标和合规要求&#xff0c;提供一系列可落地的部署模型。SVA 的核心价值在于为…...

Python爬虫(40)基于Selenium与ScrapyRT构建高并发动态网页爬虫架构:原理、实现与性能优化

目录 一、引言二、技术背景1. 动态页面处理痛点2. 架构设计目标 三、核心组件详解1. Selenium Grid集群部署2. ScrapyRT服务化改造3. 智能等待策略 四、系统架构图五、性能优化实践1. 资源隔离策略2. 并发控制算法3. 监控体系 六、总结与展望&#x1f308;Python爬虫相关文章&a…...

深入解析 Python 字典:从基础到高级应用

文章大纲 引言:什么是字典? 在 Python 编程中,字典(Dictionary)是一种极其重要的数据结构,它以键值对(key-value pair)的形式存储数据,能够高效地进行数据的查找和操作。相比于列表(List)这种依赖整数索引的序列类型,字典通过自定义的键来访问对应的值,提供了更…...

进程同步:生产者-消费者 题目

正确答案&#xff1a; 问题类型&#xff1a; 经典生产者 - 消费者问题 同时涉及同步和互斥。 同步&#xff1a;生产者与消费者通过信号量协调生产 / 消费节奏&#xff08;如缓冲区满时生产者等待&#xff0c;空时消费者等待&#xff09;。互斥&#xff1a;对共享缓冲区的访问需…...

Linux轻量级文件传输——tftp命令

摘要 TFTP是基于UDP/69端口的轻量文件传输协议。本文整理tftp命令参数/交互命令&#xff0c;提供示例&#xff0c;涵盖文件上传下载、模式设置等核心操作&#xff0c;帮助快速掌握基础文件传输。 一、TFTP核心特性 tftp&#xff08;Trivial File Transfer Protocol&#xff0…...

JavaSwing之--为组件添加背景

JavaSwing之–为组件添加背景 从实践角度&#xff0c;可以把Java Swing中的组件分为容器组件和普通组件&#xff0c;容器组件是为了更好的按照某种布局摆放各种组件&#xff0c;形成功能强大且友好的界面。 Swing中组件的背景可以分为两种类型&#xff0c;一种是背景色&#…...

MySQL项目实战演练:搭建用户管理系统的完整数据库结构【MySQL系列】

本项目适用于后台管理系统、电商用户中心、SaaS 用户模块等场景&#xff0c;特别适合开发者进行实战演练与面试准备。 一、项目背景与需求概述 我们将构建一个基础版的用户管理系统&#xff0c;具备以下业务功能&#xff1a; 用户注册与登录用户角色与权限分配日志记录与用户…...

展会聚焦丨漫途科技亮相2025西北水务博览会!

2025第三届西北水务数字化发展论坛暨供排水节水灌溉新技术设备博览会在兰州甘肃国际会展中心圆满落幕。本届展会以“科技赋能水资源&#xff0c;数智引领新动能”为主题&#xff0c;活动汇集水务集团、科研院所、技术供应商等全产业链参与者&#xff0c;旨在通过前沿技术展示与…...

【数据结构初阶】顺序表的应用

文章目录 顺序表的应用基于动态顺序表实现通讯录前言1.定义联系人数据2.给顺序表改名3.通讯录的初始化4.通讯录的销毁5.通讯录添加数据6.通讯录删除数据7.通讯录修改数据8.通讯录查找数据9.展示通讯录数据10.通讯录的最终实现 顺序表的应用 基于动态顺序表实现通讯录 前言 功…...

抽象工厂模式与策略模式结合使用小案例

目录 1.前言 1.前言 上一篇章就通过简单的案例来了解抽象工厂模式和策略模式的使用&#xff0c;现在就用个支付场景的小案例来演示两者设计模式的联合使用&#xff1b;...

C#数字图像处理(一)

文章目录 1.C#图像处理基础1.1 Bitmap类1.2 Bitmapdata类1.3 Graphics类1.4 Image类 2.彩色图像灰度化1.提取像素法2.内存法3.指针法三种方法的比较4.灰度图像二值化&#xff1a; 3.相关链接 Bitmap类、 Bitmapdata类和 Graphics类是C#图像处理中最重要的3个类,如果要用C# 进行…...

麻省理工新突破:家庭场景下机器人实现精准控制,real-to-sim-to-real学习助力

麻省理工学院电气工程与计算机科学系Pulkit Agrawal教授&#xff0c;介绍了一种新方法&#xff0c;可以让机器人在扫描的家庭环境模拟中接受训练&#xff0c;为任何人都可以实现定制的家庭自动化铺平了道路。 本文将探讨通过Franka机器人在虚拟环境中训练的特点&#xff0c;研…...

从零实现本地语音识别(FunASR)

FunASR 是达摩院开源的综合性语音处理工具包&#xff0c;提供语音识别&#xff08;ASR&#xff09;、语音活动检测&#xff08;VAD&#xff09;、标点恢复&#xff08;PUNC&#xff09;等全流程功能&#xff0c;支持多种主流模型&#xff08;如 Paraformer、Whisper、SenseVoic…...

Vue 项目中 Sass 与 Less 的对比

文章目录 一、核心特性对比二、Vue 项目集成方案三、性能关键指标四、选型决策矩阵五、Vue 3 最佳实践六、构建优化建议最终建议一、核心特性对比 特性Sass/SCSSLess语法扩展.scss(类CSS语法)类似CSS,更接近原生变量系统$variable@variable嵌套规则支持(含属性嵌套)支持Mixi…...

Python爬虫实战:研究CherryPy库相关技术

1. 引言 1.1 研究背景与意义 随着互联网信息的爆炸式增长,如何高效地获取、组织和利用网络信息成为重要研究方向。网络爬虫作为自动采集网页内容的关键技术,被广泛应用于搜索引擎构建、市场调研、数据挖掘等领域。同时,将采集到的数据以 Web 服务的形式提供,能够为用户提…...

已解决:.NetCore控制台程序(WebAPI)假死,程序挂起接口不通

本问题已得到解决&#xff0c;请看以下小结&#xff1a; 关于《.NetCore控制台程序(WebAPI)假死,程序暂停接口不通》的解决方案 记录备注报错时间2025年报错版本VS2022 WINDOWS10报错复现鼠标点一下控制台&#xff0c;会卡死报错描述——报错截图——报错原因 控制台启用了“快…...

Excel如何分开查看工作表方便数据撰写

首先我这里有2class和3class两个工作表 接下来我们点击视图 按照顺序分别点击新建窗口和全部重排 ### 然后就是这样 接下来就OK了...

微软技术赋能:解锁开发、交互与数据潜力,共探未来创新路

在微软 Build 2025 大会以及创想未来峰会上&#xff0c;微软展示的一系列前沿技术与创新应用&#xff0c;不仅展现了其在科技领域的深厚底蕴与前瞻视野&#xff0c;更为开发者和企业带来了前所未有的机遇与变革动力。 领驭科技作为微软中国南区核心合作伙伴及 HKCSP 1T 首批授…...

VR看房系统,新生代看房新体验

VR看房系统的概念 虚拟现实&#xff08;VirtualReality,VR&#xff09;看房系统&#xff0c;是近年来随着科技进步在房地产行业中兴起的一种创新看房方式。看房系统利用先进的计算机技术模拟出一个三维环境&#xff0c;使用户能够身临其境地浏览和体验房源&#xff0c;无需亲自…...

【Linux笔记】Shell-脚本(下)|(常用命令详细版)

在&#xff08;上&#xff09;篇&#xff0c;我们详细的讲解了Shell脚本的基础知识和些许命令与实验&#xff0c;这次的的&#xff08;下&#xff09;篇&#xff0c;我们会详细讲解Shell脚本的常用命令 关于脚本的基础知识请各位移步到&#xff08;上&#xff09;篇啦~ Shell…...

钉钉热点实时推送助理-思路篇

以下是针对热点实时推送助理的功能描述&#xff0c;结合机器学习技术栈与用户场景的通俗化解释&#xff1a; 快速体验的话直接用钉钉扫描下方二维码体验 1. 核心功能 &#xff08;1&#xff09;热点抓取引擎 类比&#xff1a;像蜘蛛爬取全网信息&#xff08;网络爬虫信息抽取…...

RuoYi前后端分离框架实现前后端数据传输加密(一)之后端篇

一、背景 项目采用RuoYi前后端分离框架搭建,版本为3.8.9。为确保数据传输安全性,提高爬虫获取数据的门槛,领导要求系统指定的字段在API通信过程中要实现加密传输,但未对算法类型做具体要求,本人基于目前的新创的大环境考虑,采用了SM4对称加密算法对系统指定字段进行加密…...

第七十篇 从餐厅后厨到电影院选座:生活场景拆解Java并发编程核心

目录 一、并发基础&#xff1a;餐厅后厨的协作艺术1.1 厨师与线程&#xff08;Thread&#xff09;1.2 共享资源竞争&#xff1a;唯一的炒锅1.3 线程状态转换&#xff1a;厨师工作流 二、线程同步&#xff1a;电影院选座中的锁机制2.1 同步锁&#xff08;synchronized&#xff0…...

深入理解设计模式之代理模式

深入理解设计模式之&#xff1a;代理模式 一、什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式。它为其他对象提供一种代理以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用&#xff0c;可以在不改变目标…...

8位单通道数据保存为JPG

如何将单通道8位灰度数据&#xff08;0黑~255白&#xff09;直接保存为JPG文件&#xff1f; 这里提供两种最实用方案&#xff1a;轻量级STB库&#xff08;推荐&#xff09;和OpenCV方案&#xff08;已有环境适用&#xff09; STB方案 - 推荐 //https://github.com/nothings/…...