【理论篇】SaTokenException: 非Web上下文无法获取Request问题解决 -理论篇
在我们使用sa-token安全框架的时候,有时候会提示:SaTokenException:非Web上下文无法获取Request错误截图:在官方网站中,查看常见问题排查:https://sa-token.cc/doc.html#/more/common-questions?id=q%ef%bc%9a%e6%8a%a5%e9%94%99%ef%bc%9a%e9%9d%9e-web-%e4%b8%8a%
在我们使用sa-token安全框架的时候,有时候会提示:SaTokenException:非Web上下文无法获取Request
错误截图:


在官方网站中,查看常见问题排查:
https://sa-token.cc/doc.html#/more/common-questions?id=q%ef%bc%9a%e6%8a%a5%e9%94%99%ef%bc%9a%e9%9d%9e-web-%e4%b8%8a%e4%b8%8b%e6%96%87%e6%97%a0%e6%b3%95%e8%8e%b7%e5%8f%96-httpservletrequest%e3%80%82

错误追踪:
跟着源码可以看到如下代码:

从源码中,我们可以看到,由于非Web上下文中无法直接获取HttpServletRequest对象,因此无法直接在子线程中使用SA-Token认证框架中的Web相关功能。
知道了问题原因所在,接下来,我们就来解决:
解决方案一:
提取SA-Token信息:从请求中提取SA-Token信息,并将其传递给子线程。您可以在主线程中解析请求参数或读取请求头,获取SA-Token,并将其传递给子线程。
使用线程局部变量:将SA-Token存储在线程局部变量中,以便子线程可以访问它。在主线程中,您可以将SA-Token存储在线程局部变量中,并在子线程中使用该变量来获取SA-Token。
自定义认证逻辑:在子线程中编写自定义的认证逻辑,以处理SA-Token的验证和其他相关操作。您可以使用现有的安全框架或库提供的功能,如加密算法、签名验证等,来进行认证。
以下是一个简单的示例代码,
原创不易,完成人机校验,阅读全文