广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springCloudgateWay统一鉴权的实现代码
  • 520
分享到

springCloudgateWay统一鉴权的实现代码

2024-04-02 19:04:59 520人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一,统一鉴权1.1 鉴权逻辑1.2 代码实现一,统一鉴权 内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们自己 编写过滤器来实现的,那么我们

一,统一鉴权

内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们自己 编写过滤器来实现的,那么我们一起通过代码的形式自定义一个过滤器,去完成统一的权限校验。

1.1 鉴权逻辑

开发中的鉴权逻辑:

  • 当客户端第一次请求服务时,服务端对用户进行信息认证(登录)
  • 认证通过,将用户信息进行加密形成token,返回给客户端,作为登录凭证
  • 以后每次请求,客户端都携带认证的token
  • 服务端对token进行解密,判断是否有效。

如上图,对于验证用户是否已经登录鉴权的过程可以在网关层统一检验。检验的标准就是请求中是否携 带token凭证以及token的正确性。

1.2 代码实现

下面的我们自定义一个GlobalFilter,去校验所有请求的请求参数中是否包含“token”,如何不包含请求 参数“token”则不转发路由,否则执行正常的逻辑。


@Component
public class LoginFilter implements GlobalFilter, Ordered {
 
    
    @Override
    public Mono<Void> filter(ServerWEBExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getQueryParams().getFirst("access-token");
        if (token == null){
            //如果为null,认证失败
            System.out.println("没有登录");
            exchange.getResponse().setStatusCode(httpstatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
        System.out.println("触发了全局过滤器!");
        return chain.filter(exchange);
    }
     * 指定过滤器执行顺序,返回值越小,执行优先级越高
    public int getOrder() {
        return 0;
}
  • 自定义全局过滤器需要实现GlobalFilter和Ordered接口。
  • 在filter方法中完成过滤器的逻辑判断处理
  • 在getOrder方法指定此过滤器的优先级,返回值越大级别越低
  • ServerWebExchange 就相当于当前请求和响应的上下文,存放着重要的请求-响应属性、请求实 例和响应实例等等。一个请求中的request,response都可以通过 ServerWebExchange 获取
  • 调用 chain.filter 继续向下游执行

此时,如果我们请求的参数里没有access-token 参数,就会直接展示报错页面

如果有access-token 参数,就会正常返回。

到此这篇关于SpringCloud gateWay 统一鉴权的文章就介绍到这了,更多相关springCloud gateWay 统一鉴权内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: springCloudgateWay统一鉴权的实现代码

本文链接: https://www.lsjlt.com/news/140150.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springCloudgateWay统一鉴权的实现代码
    目录一,统一鉴权1.1 鉴权逻辑1.2 代码实现一,统一鉴权 内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们自己 编写过滤器来实现的,那么我们...
    99+
    2022-11-13
  • 基于PHP实现JWT登录鉴权的示例代码
    目录一、什么是JWT1、简介2、JWT的组成3、JWT验证流程和特点二、相关问题三、PHP实现1、引入依赖2、功能实现3、封装工具类如下一、什么是JWT 1、简介 JWT(JSON ...
    99+
    2022-11-13
  • SpringBoot使用Filter实现签名认证鉴权的示例代码
    情景说明         鉴权,有很多方案,如:SpringSecurity、Shiro、拦截器、过滤器等等。...
    99+
    2022-11-12
  • Spring Security实现统一登录与权限控制的示例代码
    目录项目介绍统一认证中心配置授权服务器配置WebSecurity登录菜单鉴权资源访问的一些配置有用的文档项目介绍 最开始是一个单体应用,所有功能模块都写在一个项目里,后来觉得项目越来...
    99+
    2022-11-13
  • 手把手教你用Java实现一套简单的鉴权服务
    目录前言一、何为鉴权服务二、利用servlet+jdbc实现简单的用户登录程序1.明确思路2.手把手教你实现一个简单的web登录程序三、回顾1.密码未加密裸奔2.登录信息未存储3.对...
    99+
    2022-11-12
  • go-cqhttp权限管理系统的实现代码
    目录权限管理系统一、 概述二、 创建表1、 创建2、 生成3、 映射三、 增删改查1、 群管理1.1 增加群1.2 删除群1.3 展示功能2、 权限管理2.1 展示权限2.2 修改权...
    99+
    2022-11-11
  • 一行Python代码实现为图片上版权
    目录前言安装工具图片加水印总结前言 今天一个朋友跟我吐槽:前段时间,我辛辛苦苦整理的一份XX攻略,分享给自己的一些朋友,结果今天看到有人堂而皇之地拿着这份攻略图片去引流,并声称是自己...
    99+
    2023-01-12
    Python图片版权 Python图片加水印 Python图片水印
  • 如何实现提权的vbs代码
    小编给大家分享一下如何实现提权的vbs代码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:on error resume next dim usernam...
    99+
    2023-06-08
  • Vue+ElementUI实现权限管理系统之菜单功能实现代码
    目录菜单功能实现菜单接口封装菜单管理界面测试效果源码下载菜单功能实现 菜单接口封装 菜单管理是一个对菜单树结构的增删改查操作。 提供一个菜单查询接口,查询整颗菜单树形结构。 http...
    99+
    2022-11-13
  • SpringBoot整合Shiro实现权限控制的代码实现
    1、SpringBoot整合Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。 1.1、shiro简介 shiro有个核心组...
    99+
    2022-11-12
  • 一招实现“代码雨”的方法
    这篇文章主要介绍“一招实现“代码雨”的方法”,在日常操作中,相信很多人在一招实现“代码雨”的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一招实现“代码雨”的方法”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-14
  • vue实现菜单权限控制的示例代码
    大家在做后台管理系统时一般都会涉及到菜单的权限控制问题。当然解决问题的方法无非两种——前端控制和后端控制。我们公司这边的产品迭代速度较快,所以我们是从前端控制路由迭代到后端控制路由。...
    99+
    2022-11-12
  • 使用Golang实现加权负载均衡算法的实现代码
    背景描述 如下图所示,负载均衡做为反向代理,将请求方的请求转发至后端的服务节点,实现服务的请求。 在nginx中可以通过upstream配置server时,设置weight表示对应...
    99+
    2022-11-12
  • C++ 实现一个复数类的实例代码
    要求 实现⼀个复数类 Complex 。 Complex 类包括两个 double 类型的成员 real 和 image ,分别表示复数的实部和虚部。 对 Comple...
    99+
    2022-11-12
  • Mybatis拦截器实现数据权限的示例代码
    在我们日常开发过程中,通常会涉及到数据权限问题,下面以我们常见的一种场景举例: 一个公司有很多部门,每个人所处的部门和角色也不同,所以数据权限也可能不同,比如超级管理员可以查看某张 ...
    99+
    2022-11-13
  • Python实现一键抠图的示例代码
    目录需求来源实现方法需求来源 好友 A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成 PNG 图片下载。 橡皮擦:每天需要调用多少次? 好友 A:大概 10...
    99+
    2022-11-11
  • Python:一行代码实现的好玩的东西
    1.小浪漫() print('\n'.join([''.join([('lovelovelove'[(x-y)%12]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3&l...
    99+
    2023-01-31
    好玩 东西 代码
  • Redis实现UV统计的示例代码
    目录一、HyperlogLog1、为什么用HyperLogLog2、HyperLogLog是什么二、实现UV统计一、HyperLogLog 1、为什么用HyperLogLog 先介绍两个概念: UV:全称 Unique ...
    99+
    2023-01-29
    Redis UV统计
  • SpringBoot实现统一封装返回前端结果集的示例代码
    在实际项目开发过程中、事实上我们经常用@restcontroller注释的方式,将相当于将返回数据的基本形式统一为JSON格式的数据。但是,由于我们的项目可能是由很多人开发的,所以我...
    99+
    2022-11-13
  • 怎么用代码实现一个迷你响应式系统vue
    这篇文章主要讲解了“怎么用代码实现一个迷你响应式系统vue”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用代码实现一个迷你响应式系统vue”吧!基本定义什么是响应式系统?学术上的定义,我...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作