@ SaCheckSign与 @SaCheckAccessToken同时使用
使用版本:
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 两个注解应该互不影响。 请问,是我的理解不对,还是文档出了问题?
第2条写错了,不要考虑
两者同时写,代表同时校验两者,需要两者均校验通过,才可以进入方法。 如果你的代码里还有 StpUtil.checkLogin() 等样例代码,则需要再提供 satoken 会话token
报 无效 token,说明提供的 satoken 会话token无效 报 无效 access_token 说明提供的 access_token 无效 报 无效 sign 说明提供的 sign 无效
我已经把资源与会话token合并了
你提供一下具体的报错异常堆栈信息截图
两个注解一起写 就是两个一起校验
报 无效 access_token 说明提供的 access_token 无效 报 无效 sign 说明提供的 sign 无效
有什么不理解的地方吗 报哪个错就说明哪个你前端提供的不对 我没理解你的困惑点在哪里
会话与资源token 合并,1 单独获取userinfo 正常; 2 在具体的业务方法上只使用@ SaCheckAccessToken ,输入授权时返回的token,不会报错,但是加上@SaCheckSign,会报: 无效签名错误;3 单独使用@SaCheckSign,偶然也会报错:无效签名,但不是一定报错,签名是工具类SaSignUtil.addSignParamsAndJoin(XXX)生成的;
2 在具体的业务方法上只使用@ SaCheckAccessToken ,输入授权时返回的token,不会报错,但是加上@SaCheckSign,会报: 无效签名错误; 因为你前端没有提供正确的签名所以报签名错误
3 单独使用@SaCheckSign,偶然也会报错:无效签名,但不是一定报错,签名是工具类SaSignUtil.addSignParamsAndJoin(XXX)生成的; 你得提供一个稳定的复现方式我才能分析