跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • springcloud gateway 针对某些路由跳过全局过滤器,有什么方法吗?
未分類
13 7 月 2020

springcloud gateway 针对某些路由跳过全局过滤器,有什么方法吗?

springcloud gateway 针对某些路由跳过全局过滤器,有什么方法吗?

資深大佬 : Augustine1128 11

请问各位大佬,springcloud gateway 针对某些路由跳过全局过滤器,有什么方法吗?

网上看了一些方法,都是向请求的 attributes 里放参数,然后全局过滤器依据这些参数决定做不做鉴权,我觉得不太安全(恶意请求也可以向请求头里面放这些参数),请问有什么比较好的方法?

大佬有話說 (13)

  • 資深大佬 : retanoj

    所以,需求是正确嘛?

  • 主 資深大佬 : Augustine1128

    @retanoj 不太明白您的意思,您是说需求不合理吗?其实想做的就是除了注册登录,其他都要做鉴权。

  • 資深大佬 : limuyan44

    可以采用针对某几个 url 进行拦截,未登录时,再怎么伪造请求,某些 url 都会校验的,至于登录之后一般都会存在某些 token 。

  • 主 資深大佬 : Augustine1128

    @limuyan44 这样就要在代码里把某些 url 写死?总感觉这样不够优雅

  • 資深大佬 : StevenTong

    写两个 filter,一个用来全局移除前端传过来的 header,一个给指定路由加你要的 header,保证就算恶意请求过来携带了 header 也不管用。

  • 資深大佬 : limuyan44

    @Augustine1128 配置写在配置中心或者配置文件是通常的作法,不存在硬编码在类中的情况。

  • 主 資深大佬 : Augustine1128

    @StevenTong 这个可以考虑一下

  • 主 資深大佬 : Augustine1128

    @limuyan44 好的,谢谢指点

  • 資深大佬 : xuanbg

    写个 url 配置表放在 redis 里面,这个表搞一个是否验证的字段,过滤器根据这个字段来决定直接放行还是验证身份权限。如果访问的 url 都不存在表里面,就可以直接拦回去了。

  • 資深大佬 : myCupOfTea

    获取配置
    @Component
    @ConfigurationProperties(prefix = “gateway”)
    public class GatewayConfig {

    private String[] excludesUrls;

    public String[] getExcludesUrls() {
    return excludesUrls;
    }

    public void setExcludesUrls(String[] excludesUrls) {
    this.excludesUrls = excludesUrls;
    }
    }

    添加不鉴权的接口

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http.headers().frameOptions().disable();
    http.csrf().disable()
    .authorizeRequests()
    .antMatchers(“/test/**”, “swagger-ui**”).permitAll()
    .and().addFilterBefore(new TokenAuthFilter(permissionClient, redisService,
    new String[]{“/api/**”},
    excludesUrls.getExcludesUrls()),
    UsernamePasswordAuthenticationFilter.class);

    }

    当然 TokenAuthFilter 继承 GenericFilterBean 实现的

    不难的
    配置中心的配置文件

    gateway:
    excludesUrls:
    – /api/user/auth/**
    – /api/cms/content/editorUpload
    – /api/file/downloadFileByUri
    – /api/file/previewFileByUri

  • 資深大佬 : StevenTong

    @myCupOfTea spring cloud gateway 是 webflux 的,security 也是 webflux security,跟你提供的代码实现上会有一些差别。主想跳过 gatewayfilter 吧,不是 securityfilter

  • 主 資深大佬 : Augustine1128

    @StevenTong 想跳过的其实是 globlefilter

  • 資深大佬 : myCupOfTea

    @StevenTong 反正本质上就是读配置加 filter 就行了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具