首页 > 其他分享 >springcloud alibaba gateway网关鉴权

springcloud alibaba gateway网关鉴权

时间:2024-04-18 13:22:38浏览次数:25  
标签:网关 String chain exchange springcloud userId filter token 鉴权

登录鉴权:在gateway网关中实现全局过滤器GlobalFilter以及拦截器的顺序Ordered,在nacos中配置好需要放行的路径(如登录/login),获取请求头中的用户id,组装reids的key,来redis中存放的value,即token,再获取请求头中的token来跟redis中的value值进行比对,一致则放行,否则抛出异常。
核心代码如下:

点击查看代码
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        URI uri = request.getURI();
        String url = uri.getPath();
        log.info("请求url:{}", url);
        if (this.urlIsWhiteList(url)) {
            return chain.filter(exchange);
        }
        String token = exchange.getRequest().getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
        String userId = exchange.getRequest().getHeaders().getFirst(RedisConstant.HEADER_USERID);
        if (StrUtil.isEmpty(token) || StrUtil.isEmpty(userId)) {
            log.error("请求参数未检索到token和用户Id,授权不予通过,当前登录Id={}", userId);
            throw new BizException("未检索到token和用户Id,授权不予通过");
        }
        String tokenValue = redisTemplate.opsForValue().get(RedisConstant.AUTH_TOKEN_PREFIX + userId);
        if (!(StrUtil.equals(token, tokenValue))) {
            log.error("token与缓存不匹配,授权不予通过,当前登录Id={}", userId);
            throw new BizException("token与缓存不匹配,授权不予通过");
        }
        //获取用户ip存放到redis里
        getUserIpSetRedis(request, userId);
        //调用chain.filter继续向下游执行
        return chain.filter(exchange);
    }

标签:网关,String,chain,exchange,springcloud,userId,filter,token,鉴权
From: https://www.cnblogs.com/zhuoyb/p/18143319

相关文章

  • SpringCloud(七.4)ES(elasticsearch)-- DSL查询语法
    DSL查询语法 1、查询所有以下是简写和全写 总结:  2、全文检索查询(match)全文检索查询,会对用户输入内容分词,常用于搜索框搜索: 回顾在 SpringCloud(七.3)ES(elasticsearch)--RestClient操作 中创建索引时添加的all字段,以及字段拷贝copy_to。这里all字段就派上了用......
  • 长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进
    本文由腾讯技术团队peter分享,原题“腾讯网关TGW架构演进之路”,下文进行了排版和内容优化等。1、引言TGW全称TencentGateway,是一套实现多网统一接入,支持自动负载均衡的系统,是公司有10+年历史的网关,因此TGW也被称为公司公网的桥头堡。本文从腾讯公网TGW网关系统的应用场景、......
  • 基于K8s+Docker+Openresty+Lua+SpringCloudAlibaba的高并发秒杀系统——与京东淘宝同
    ​介绍基于K8s+Docker+Openresty+Lua+SpringCloudAlibaba的高并发高性能商品秒杀系统,本系统实测单台(16核32G主频2.2GHz)openresty(nginx)的QPS可高达6w并发,如果您需要应对100w的并发,则需要100w/6w=17台openresty服务器,17台服务器同时接收并处理这100w的并发流量呢?当然是商业......
  • SpringCloud(七.3)ES(elasticsearch)-- RestClient操作
    RestClient是ES官方提供的各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html官方文档使用教程    使用RestClient操作索引库使用案例:  hote......
  • 07、VXLAN网关划分
    VXLAN网关划分和VLAN类似,不同VNI之间的VXLAN,及VXLAN和非VXLAN之间不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,VXLAN引入了VXLAN网关。VXLAN网关分为:二层网关:用于解决租户接入VXLAN虚拟网络的问题,也可用于同一VXLAN虚拟网络的子网通信。三层网......
  • 05_NET中使用Ocelot网关(负载均衡、限流、认证)
    Ocelot是一个用.NETCore实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与ServiceFabric、ButterflyTracing集成。而且这些功能都只需要简单的配置即可完成。官网:GitHub-ThreeMammals/Ocelot:.NETAPIGateway......
  • 物联网浏览器(IoTBrowser)-Java快速对接施耐德网络IO网关
     前一段时间有个Java技术栈的朋友联系到我,需要快速对接现有的无人值守称重系统,这里的对接是指替代现有系统,而非软件层面的对接,也就是利用现有的硬件开发一套替代现有软件的自动化系统。主要设备包括地磅秤、道闸、红外对射传感器、摄像头、小票打印、LED显示屏等等,全程使用LED......
  • 记录协助Javaer硬件快速开发过程之Web技术栈对接施耐德网络IO网关
    前一段时间有个Java技术栈的朋友联系到我,需要快速对接现有的无人值守称重系统,这里的对接是指替代现有系统,而非软件层面的对接,也就是利用现有的硬件开发一套替代现有软件的自动化系统。主要设备包括地磅秤、道闸、红外对射传感器、摄像头、小票打印、LED显示屏等等,全程使用LED显示......
  • 记录真实项目中遇到的bug--008:支付鉴权bug
    T08:支付鉴权bug:1.优先级:T12.前提条件:会员A填写第一个页面信息3.预期结果:在填写完第二个信息后,跳过支付界面,展示注册成功页面,同时短信提示注册成功。4.实际结果:会员A未填写完第二个信息,未完成注册,短信提示注册成功。5.缺陷跟踪:后端在第一个界面完成后加入了支付接口的拦截,即......
  • TSINGSEE青犀AI智能分析网关V4叉车载货出入库检测算法介绍及应用
    随着物流行业的快速发展,叉车作为物流运输的重要设备,其安全性和效率性越来越受到人们的关注。然而,在实际操作中,由于人为因素和操作环境的复杂性,叉车事故时有发生,给企业和个人带来了巨大的损失。为了提高叉车运输的安全性和效率,近年来,人工智能技术逐渐应用于叉车运输领域,其中,叉车载......