satoken指定接口跳过网关拦截不做校验

文章介绍了如何配置Sa-Token全局过滤器,包括设置拦截和开放的URL,定义预认证函数,以及自定义鉴权和异常处理方法。特别地,它使用了notMatch来跳过特定路由路径的权限检查,如在网关断言路由路径aaaaa下,不检查bbbb方法路径的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.satoken过滤器配置类
  /**
     * Sa-Token全局过滤器
     *
     * @return
     */
    @ConditionalOnProperty(prefix = "", name = "", havingValue = "")
    @Bean
    public SaReactorFilter getSaReactorFilter() {
        return new SaReactorFilter()
                // 拦截的url
                .addInclude("/**")
                // 开放的url
                .addExclude("")
                // 前置函数:在每次认证函数之前执行
                .setBeforeAuth(obj -> {
                    // 如果是预检请求,则立即返回到前端
                    SaRouter.match(SaHttpMethod.OPTIONS)
                            .free(r -> { }).back();
                })
                // 鉴权方法
                .setAuth(obj -> {
                    // 权限认证
                    SaRouter.match("/aaaaa/**")
                            .notMatch("/aaaaa/bbbbb/**")
                            .check(r -> StpUtil.checkLogin());
                })
                // 异常处理方法:每次setAuth函数出现异常时进入
                .setError(e -> {}
                );
    }
2.网关断言路由路径:

在这里插入图片描述

3.接口路径:

在这里插入图片描述

注:通过notMatch跳过,其中aaaaa为网关断言路由路径,bbbbb为方法请求路径,/**表示该controller路径下的所有方法

### 关于SaToken拦截器配置生效的原因分析 当遇到`excludePathPatterns`部分生效的情况时,这通常意味着即使指定了某些路径应被排除在外,这些路径仍然受到拦截器的影响。具体原因可能涉及多个方面。 对于全局注册配置中的`excludePathPatterns`起作用的问题,在尝试多种解决方案之后发现,问题根源在于Spring框架如何处理预检请求(即OPTIONS请求)。由于此类请求会携带任何认证信息,因此在到达`SaInterceptor`之前就已经因为缺少必要的身份验证令牌而导致了必要的拦截行为[^2]。 针对上述情况的一种有效解决策略是在应用层面增加对HTTP OPTIONS方法类型的特殊处理逻辑,确保这类请求能够绕过常规的身份验证流程: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS"); } } ``` 另外一种常见的场景是与API文档工具集成时出现问题,比如Knife4j。为了使Swagger UI等相关资源可以正常加载而受安全机制干扰,应当仔细检查并调整路径模式匹配规则,确保所有静态文件和服务端点都被正确地列入白名单内[^3]。 最后值得注意的是,在使用Spring Cloud Gateway作为网关服务的情况下,还需要额外关注其自身的路由设置是否会对下游微服务的安全性造成影响。特别是当涉及到跨域资源共享(CORS)政策以及代理转发规则的时候,可能会间接引起类似的限控制失效现象[^4]。 通过以上措施应该可以帮助定位并修复SaToken拦截器配置中存在的漏洞或足之处,从而恢复预期的功能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值