4.7.0微服务框架,为什么自定义的AuthInterceptor未生效

Blade 未结 1 169
99290401
99290401 2026-02-03 13:13

一、该问题的重现步骤是什么?

1. 在微服务中自定义了AuthInterceptor,重写了preHandle方法

2. Configuration中,添加了拦截器registry.addInterceptor(authInterceptor())

3.


二、你期待的结果是什么?实际看到的又是什么?

期待:执行AuthInterceptor中的preHandle方法

实际:访问后端接口时,跳转至TokenInterceptor


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

商业版,4.7.0 微服务版本


四、请提供详细的错误堆栈信息,这很重要。

2026-02-03 11:38:16.465  WARN 19580 --- [  XNIO-1 task-2] o.s.c.secure.provider.ResponseProvider   : 签名认证失败


五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (楼主)
    2026-02-03 17:06

    他的逻辑见下面截图,如果需要自定义但是不需要tokenInterceptor,你可以自定义心的 secureHandler,然后用@Bean实例化,这样就能写成你自己的逻辑了。

    CleanShot20260203170448@2x.png

    CleanShot20260203170503@2x.png

    CleanShot20260203170517@2x.png

    作者追问:2026-02-03 17:06

    你好,我再问个问题,之前使用的是2.9.0版本的微服务框架,两个业务应用,api和manager,api是终端设备调用,无token登录,用自定义的AuthInterceptor,api通过网关调用manager,可以成功;升级4.7.0之后,我现在解决了终端连接api的问题,api调用manager,因为无token,被TokenInterceptor拦截,这个是4.7.0框架增加的拦截校验么?如果想调用成功的话,应该怎么修改?

    回答: 2026-02-03 17:06

    现在加了二级校验,之前低版本只校验网关,现在网关通过后,服务本身还会再次校验,所以你得重写tokenInterceptor,或者可以用4.8这个新的功能:https://center.javablade.com/blade/BladeX-Doc/src/branch/master/%E7%AC%AC5%E7%AB%A0%20%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7/5.34%20ApiKey%20%E8%B6%85%E7%BA%A7%E4%BB%A4%E7%89%8C%E9%85%8D%E7%BD%AE.md


    作者追问:2026-02-03 17:06

    我按照之前提供的方案,在微服务中重写了,secureHandler,并用@Bean注册,tokenInterceptor设置为null,前端访问的时候还是提示“签名认证失败”,请问是写法上有问题么?
    image.png
    image.png

    0 讨论(1)
提交回复