Sa-Token icon indicating copy to clipboard operation
Sa-Token copied to clipboard

@ SaCheckSign与 @SaCheckAccessToken同时使用

Open hanrui0908 opened this issue 7 months ago • 7 comments

使用版本:

1.43

涉及的功能模块:

参数签名、oauth2

测试步骤:

  • 我经过以下步骤测试: 1 oauth2模式1 授权, 查询模式一下用户信息验证access_token的正确性,于预期相符 2 在某个业务接口上加上@ SaCheckSign,不加@SaCheckAccessToken;不会百分百出错,但是有时会报错:无效的token, token 参数在header中通过:Authorization参数传入,值有前缀 bearer; 3 在自同一个业务接口上加上@ SaCheckSign,并且加上@SaCheckAccessToken;不会百分百出错,但是有时会报错:无效的sign, token 参数在header中通过:Authorization参数传入,值有前缀 bearer; 4 单独使用SaCheckAccessToken,不会出现错误,单独使用@SaCheckSign,可能出现无效的sign错误

  • 得出以下结果:

  • 我的理解是: @ SaCheckSign与@SaCheckAccessToken 两个注解应该互不影响。 请问,是我的理解不对,还是文档出了问题?

hanrui0908 avatar May 26 '25 07:05 hanrui0908

第2条写错了,不要考虑

hanrui0908 avatar May 26 '25 07:05 hanrui0908

两者同时写,代表同时校验两者,需要两者均校验通过,才可以进入方法。 如果你的代码里还有 StpUtil.checkLogin() 等样例代码,则需要再提供 satoken 会话token

报 无效 token,说明提供的 satoken 会话token无效 报 无效 access_token 说明提供的 access_token 无效 报 无效 sign 说明提供的 sign 无效

click33 avatar May 26 '25 07:05 click33

我已经把资源与会话token合并了

hanrui0908 avatar May 26 '25 07:05 hanrui0908

你提供一下具体的报错异常堆栈信息截图

click33 avatar May 26 '25 07:05 click33

两个注解一起写 就是两个一起校验

报 无效 access_token 说明提供的 access_token 无效 报 无效 sign 说明提供的 sign 无效

有什么不理解的地方吗 报哪个错就说明哪个你前端提供的不对 我没理解你的困惑点在哪里

click33 avatar May 26 '25 07:05 click33

会话与资源token 合并,1 单独获取userinfo 正常; 2 在具体的业务方法上只使用@ SaCheckAccessToken ,输入授权时返回的token,不会报错,但是加上@SaCheckSign,会报: 无效签名错误;3 单独使用@SaCheckSign,偶然也会报错:无效签名,但不是一定报错,签名是工具类SaSignUtil.addSignParamsAndJoin(XXX)生成的;

hanrui0908 avatar May 26 '25 07:05 hanrui0908

2 在具体的业务方法上只使用@ SaCheckAccessToken ,输入授权时返回的token,不会报错,但是加上@SaCheckSign,会报: 无效签名错误; 因为你前端没有提供正确的签名所以报签名错误

3 单独使用@SaCheckSign,偶然也会报错:无效签名,但不是一定报错,签名是工具类SaSignUtil.addSignParamsAndJoin(XXX)生成的; 你得提供一个稳定的复现方式我才能分析

click33 avatar May 26 '25 09:05 click33