给单个service的method设置anonymousAllowed="true"后发现依旧无法匿名访问,开启cuba.rest.anonymousEnabled=true以后可以匿名访问,但是这是个全局设置,并不是我需要的。
框架版本:7.2.11
给单个service的method设置anonymousAllowed="true"后发现依旧无法匿名访问,开启cuba.rest.anonymousEnabled=true以后可以匿名访问,但是这是个全局设置,并不是我需要的。
框架版本:7.2.11
我在 7.2.11 测试是可以的。方便传一个你的测试项目吗?
后来调试发现是服务的签名没匹配上导致的。
这里能改成如果是服务的签名没匹配上优先抛出404而不是401么?
逻辑是这样的:
rest API 用到 Spring security 的安全验证机制,在访问 API 时,首先要进行安全验证。
CUBA 里面的匿名访问,其实是在 CUBA 的 Filter 中为匿名的 API 访问手动添加的匿名安全认证。然后将调用逻辑交给 Spring。
CUBA 的对匿名 api 的处理逻辑是:
你这种情况就是第二步检查没过,第三步没有添加安全认证,相当于无安全认证访问接口,先抛出 401 是对的。如果你带了安全认证,才会走到下一步,发现 path 不可用,返回 404。
好的,感谢帮助!