V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nitouge
V2EX  ›  Java

sa-token + spring cloud gateway 过滤器顺序问题

  •  
  •   nitouge · 8 小时 21 分钟前 · 172 次点击

    执行顺序(从小到大): 1.TRACE_ID_ORDER - 生成 TraceId (最高优先级) 2.BLACK_LIST_ORDER - 黑名单检查(尽早拦截) 3.REQUEST_CONTEXT_ORDER - 缓存请求体(为后续过滤器提供数据) 4.XSS_INJECTION_ORDER - XSS 注入检查 5.SQL_INJECTION_ORDER - SQL 注入检查 6.RATE_LIMITER_ORDER - 限流检查 7.API_LOG_ORDER - API 日志记录 8.AUTH_ORDER - Sa-Token 认证鉴权 9.JWT_BLACKLIST_ORDER - JWT 黑名单检查 10.FORWARD_AUTH_ORDER - 转发认证信息 11.业务处理 12.RESPONSE_CONTEXT_ORDER - 缓存响应体 13.REMOVE_CONTEXT_ORDER - 清理上下文(最低优先级)

    Auth 是 WebFilter ( SaReactorFilter )”这一点决定了它一定会先于所有 GlobalFilter 执行。也就是说,按你写的序列把 Auth 放在第 8 位( TraceId 、黑名单、注入之后)是做不到的,除非把认证改造成 GlobalFilter (不走 SaReactorFilter )。所以:

    如果保留 Sa-Token 的 SaReactorFilter (推荐做法),实际顺序一定是:WebFilter 阶段先认证,再进入 GlobalFilter 阶段做 TraceId/黑名单/注入/限流/日志等。 你给出的序列可作为 GlobalFilter 之间的相对顺序,但无法跨越 WebFilter 与 GlobalFilter 的边界 如果认证( Auth )放在最前面,未认证或非法请求可能直接被拦截,导致 API 日志和上下文处理没有执行 我这个 filter 顺序是否有问题,下面是整理的部分

    Filter 类型 依赖 推荐 order
    CORS WebFilter - Integer.MIN_VALUE
    Auth(Sa-Token) WebFilter - -101
    Actuator WebFilter - -100 (可选)
    TraceId GlobalFilter Integer.MIN_VALUE
    RequestContext GlobalFilter TraceId Integer.MIN_VALUE+20
    Blacklist GlobalFilter/WebFilter 可依赖 Auth Integer.MIN_VALUE+10(GlobalFilter)
    XSS Injection GlobalFilter RequestContext Integer.MIN_VALUE+30
    SQL Injection GlobalFilter RequestContext Integer.MIN_VALUE+40
    Rate Limiter GlobalFilter RequestContext / IP Integer.MIN_VALUE+50
    API Log GlobalFilter RequestContext Integer.MIN_VALUE+60
    JWT Blacklist GlobalFilter Auth -90
    Forward Auth GlobalFilter Auth -80
    Business 路由转发 - -
    ResponseContext GlobalFilter RequestContext WRITE_RESPONSE_FILTER_ORDER-1
    RemoveContext GlobalFilter 全局上下文 Integer.MAX_VALUE
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    ♥ Do have faith in what you're doing.