Pig项目新加权限类型生成Token并且解决验证问题

news2024/10/6 20:35:28

前言

这个教程可能不是最好的,也许是最直白的,你只需要找到对应的地方跟着博主一起去修改就能操作成功,今天用添加 mini 的授权模式的例子说一下这个 mini 模式是自己自定义的,你想叫什么都行

最近可烦死了快被折磨死人,在昨天睡了一觉,今天就解决问题了…睡一觉就能解决问题,那我为啥要花这么多时间呢???

正文

步骤一

首先你得去找一下 Pig 开发文档的官网https://www.yuque.com/pig4cloud/pig/gg3ndm,找到官网之后如果你也想向博主一样去修改这个,你可以去找到目录下的认证授权,并且把下面的pig 生成 token (认证)详解pig 校验 token (鉴权)详解这两个解说看完就行,但是这个看了如果你之前有做过类似的估计很容易看懂.这个文档只是让你便于理解.这步是让你以后有需求可以知道去哪找

Pig权限认证相关

步骤二

先去新增一个客户端的 ClientId 和 ClientKey,在 pig 数据库去执行下面这句 Sql

INSERT INTO `sys_oauth_client_details` (`client_id`,`resource_ids`,`client_secret`,`scope`,`authorized_grant_types`,`web_server_redirect_uri`,`authorities`,`access_token_validity`,`refresh_token_validity`,`additional_information`,`autoapprove`) VALUES ('mini',NULL,'mini','server','mini,refresh_token',NULL,NULL,10000,11111111,'','true');

上面这句 Sql 的意思就是新增了一个 clientId 为 mini,clientSecret 也为 mini,并且授权类型为 mini 和 refresh_token这里面的refresh_token的授权模式原来已经有了我们就不做处理了,我们要新加一个叫 mini 的授权模式,并且获取的参数也要更改

步骤三:添加 mini 授权模式

搞完这个之后你就可以直接打开你下载的 Pig 项目我们先去修改文档里面提到的权限认证也就是Auth 模块,这个模块就是进行权限认证的,所有逻辑都在里面,我们可以进行修改,在这里我们要新增一个 mini 的授权模式

我们可以看到在他这个项目的结构的 support 目录下已经写好了两个授权模式,一个就是官方自己用的 password 授权模式,另外一个就是 sms 短信验证模式,我们这个图片里面已经有了 mini 模式,这个是我已经加过的,我们只需要新建一个 mini 的软件包,然后assword 包下的三个类给全部复制到我们先建的 mini 包下.然后再对里面的参数进行修改就行,首先就是修改类名打开前两个类

首先就是把这个给修改了,下面的也以此类推,就是更改授权模式,我就是把那些授权的字段给封转到一个类里面了,我自定义的类长下面这个样子

步骤四:修改 mini 授权参数

咱们接着往下走,把下面图片里面标记的都给改了,主要就是更改授权模式

去更改第二个类,第二个类就是修改 mini 授权模式的授权访问参数,也就是请求参数,我们只需要去修改下面图片里的标记的地方就行,我这里接受的参数就是 code,所以就写了 code 参数,如果不知道填啥,就去另外的授权模式里面看看,他怎么设置请求参数的

做完这些你就已经添加了一个 mini 的授权模式,现在你需要去用一个对象来接收这个授权模式的请求

步骤五:新建一个 MiniUserDetilServiceImpl 对象

首先找到这个pig-common模块,在这个模块下找到pig-common-security我们在这个模块的 service 软件包下直接复制标记的那个类,然后修改一下名字就行

主要就是修改下面图片里圈起来的,第一个圈起来的就是查询用户的方式,然后赋值给一个他自己封装用户对象,第二个圈起来的就是验证授权方式,这两个改好我们就完成了一个生成 token 的类,并且可以在第一个框里面写上查询你的需要接入用户的查询逻辑

我们写好这个,得让 IOC 来管理他,让请求自动进入到你写的逻辑里面,这里 Pig 做了处理,我不知道他还做了哪些,所以还是按照他的方法让 IOC 来管理你的类.找到pig-common-security模块的 resources 文件夹,在里面找到 META-INF/spring 文件夹,然后打开 org.springframework.boot.autoconfigure.AutoConfiguration.imports 这个文件,在里面加入我们创建的授权模式接收对象就好了,我也不知道怎么形容,就这样叫吧

做到这里,我们已经加了一个授权模式,又加了一个授权模式的接收对象,做完这些我们还需要做一些操作,需要再判断我们是哪个请求,不要被拦截下来

步骤六:处理 mini 授权模式生成 token 过程中的验证

我们需要找到pig-auth模块下的 com/pig4cloud/pig/auth/support/core 软件包下的 PigDaoAuthenticationProvider.java 类,在这里我们要加上我们的第一个排除,排除验证密码

第二个排除,我们找到pig-gateway模块,找到 com/pig4cloud/pig/gateway/filter 包下的 PasswordDecoderFilter.java 和 ValidateCodeGatewayFilter.java 两个类,我们需要排除密码解密和验证码校验,如果你的用户有密码需求的话可以保留,按着下面图片里圈起来的写上就行,两个都一样.

做完这些我们就可以生成 token 了下面发一下测试的返回数据

{
   "sub": "XSSQ",
   "clientId": "mini",
   "iss": "https://xxxx",
   "token_type": "Bearer",
   "access_token": "bcb6b4a5-72ef-4bbe-b78f-861cccbec85b",
   "refresh_token": "xxmWRkZ58T4HI2pEEU4KfZ434R3DJzYKf-Lyr8w9xmdnGD4_P_6MmMzfr-IO79H8yQcrJbnLzjlkg9Yzs8z-jzr8QThhEmcSvtpwFd18dsHkUwyZKMuMaGvMaM5-4SVW",
   "aud": [
       "custom"
   ],
   "license": "https://xxxx",
   "nbf": 1685415720.223000000,
   "user_info": {
       "password": null,
       "username": "XSSQ",
       "authorities": [],
       "accountNonExpired": true,
       "accountNonLocked": true,
       "credentialsNonExpired": true,
       "enabled": true,
       "attributes": {},
       "id": "4444444",
       "deptId": null,
       "phone": null,
       "name": "XSSQ"
   },
   "scope": [
       "server"
   ],
   "exp": 1685425720.223000000,
   "expires_in": 9999,
   "iat": 1685415720.223000000,
   "jti": "39453712-b1b5-4a2a-b20e-3d8b63000b4f"
}

步骤七:处理 mini 授权模式解析 token 过程的验证

直接找到pig-common模块下的pig-common-security模块,在这个模块下找到com/pig4cloud/pig/common/security/component软件包下的PigCustomOpaqueTokenIntrospector.java类进行修改里面的具体内容,如果不做这个操作就会在使用的时候返回,用户不存在的错误,我们配置好下面这个图片之后就能正常解析 token,我们也可以在里面写上解析 token 的业务逻辑

做完这些整个的权限认证就结束了,从刚开始的新加一个权限标识符,到新加权限的类型,还有客户端模式,这一套走下来比较复杂,不过不难理解

后记

小问题:

如果在生成token的时候报了一个客户端Id未授权,那我们就去找一下Auth模块下的我们自己新加的那个mini软件包下的xxxxxAuthenticationProvider.java类,把里面的checkClient给直接返回true就行或者不做任何处理也行,我是直接把这个抛出异常的动作给删掉了

后言:

如果我的博客帮助到了你,你可以我的博客https://blog.csdn.net/weixin_57228276或者微信公众号搜索幸识SQ,可以找到我,里面也有更多的优秀文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教你一步步使用实现TensorFlow 进行对象检测

在本文中,我们将学习如何使用 TensorFlow Hub 预训练模型执行对象检测。TensorFlow Hub 是一个库和平台,旨在共享、发现和重用预训练的机器学习模型。TensorFlow Hub 的主要目标是简化重用现有模型的过程,从而促进协作、减少冗余工作并加速机器学习的研发。用户可以搜索社区…

【数据结构与算法分析inC-MarkAllen】2-算法分析

文章目录 第二章——算法分析2.1 算法评价的量化理论2.1.1 函数渐进增长四种渐进增长定义运算法则两个函数相对增长率判断 2.1.2 算法分析的计算机模型2.1.3 要分析的目标最坏情况 2.1.4 一般法则for循环嵌套for循环顺序语句分支语句二分函数调用 2.2 计算方法2.2.1 循环主体中…

Android应用的加固与逆向

文章目录 前言名词释义加固手段逆向dex文件resources.arscReact Native TODO文档链接工具参考加固工具逆向工具 前言 加固与逆向是安卓攻防的两个方面。搞安卓研发时间长了就不可避免走到这一步。既要研究别人的实现,又要保护好自己的东西。个人认为,逆…

糖尿病首创新药的中国梦

《多肽链》原创出品 作者|慕白 在中国上市一款first-in-class(FIC)全球首创新药,有多难?先来看一组数据对比。 按照美国FDA的药品评价和研究中心(CDER)报告数据,2022年有37款新药…

chatgpt赋能python:介绍Python中二次函数的基本知识

介绍Python中二次函数的基本知识 在Python中,二次函数是一个重要的概念,它是由一个二次项、一次项和一个常数项构成的一个代数式。二次函数在数学和物理学中都有广泛的应用,了解二次函数的基本知识对于学习和理解这些领域都是非常重要的。在…

uni-app实现 app 小程序 手机端H5扫码功能

首先 扫码这个功能小程序和App都是有现成的方法 但是H5是不行的 我们可以看这样一段代码 <template><view><!-- #ifdef MP-WEIXIN --><button click"scan">扫描</button><view v-if"result">{{result}}</view>…

长尾词挖掘,挖掘百度相关词和下拉词的操作步骤

什么是下拉词 在搜索引擎的搜索框输入一个关键词的时候&#xff0c;搜索框会推荐一些与这个关键词有关联的长尾关键词&#xff0c;如“汉服”。 什么是相关词 在搜索引擎的搜索框输入一个关键词的时候&#xff0c;一般会推荐与这个关键词相关的长尾关键词。如“汉服”。 挖…

【SpringBoot系列】SpringBoot中 @Configuration 和 @Component 的区别及原理分析

示例 //Component Configuration public class AppConfig {Beanpublic Foo foo() {System.out.println("foo() invoked...");Foo foo new Foo();System.out.println("foo() 方法的 foo hashcode: " foo.hashCode());return foo;}Beanpublic Eoo eoo() {…

华为OD机试真题B卷 Java 实现【等差数列】,附详细解题思路

一、题目描述 等差数列 2&#xff0c;5&#xff0c;8&#xff0c;11&#xff0c;14。。。。 从 2 开始的 3 为公差的等差数列。 输出求等差数列前n项和。 数据范围&#xff1a; 1≤n≤1000 。 二、输入描述 输入一个正整数n。 三、输出描述 输出一个相加后的整数。 四…

Dell电脑出现ac power adapter电压异常的解决办法

最近这段时间不知怎么的&#xff0c;dell笔记本电脑一开机就出现下面错误&#xff1a; The AC Power Adapter Wattage Cannot be Determined. 无法确定此交流电源的功率信息。 The Battery Maynot Charge. 电池将可能无法充电。 The System Will Adjust the Performance to Ma…

springboot+java农产品网上购物商城系统005

基于springboot技术的购物商城系统是属于JavaWeb项目&#xff0c;采用的开发框架为springboot框架&#xff0c;也就是Spring mvc、Spring、MyBatis这三个框架&#xff0c;页面设计用的是jsp技术作为动态页面文件设计&#xff0c;jsp文件里可以对实现html等界面布局的代码&#…

MySQL CAST 函数与 CONVERT 函数

文章目录 CAST 函数与 CONVERT 函数1. 数字和小数点组成的字符串转换为整型2. 非数值字符串转换为整型3. 把整型转换为二进制4. 数字和小数点组成的字符串转换为浮点型 CAST 函数与 CONVERT 函数 前面我们介绍的两个函数用于字符串和日期类型之间进行相互转换&#xff0c;有时我…

C.11医疗领域实体抽取:UIE Slim最新升级版含数据标注、serving部署、模型蒸馏等教学,助力工业应用场景快速落地

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

量子力学专题:产生算符与消灭算符

从粒子数表象探讨问题 线性谐振子在坐标表象中表示 哈密顿算符 定态薛定谔方程 渐近解 做代换使方程变为在\zeta \approx \pm \infty 时&#xff0c;有渐进解 两端条件要求阶段&#xff0c;因此有 则线性谐振子的定态波函数为&#xff1a; 粒子数表象中线性谐振子能级和波函…

chatgpt赋能python:Python中可以连等吗?

Python中可以连等吗&#xff1f; 在Python中&#xff0c;我们可以使用单个语句实现多个变量的赋值&#xff0c;这被称为连等&#xff08;也称为多重赋值或元组赋值&#xff09;。那么&#xff0c;Python中可以连等吗&#xff1f;让我们深入了解这个问题。 什么是连等&#xf…

Golang指针, 值类型,标识符,关键字,运算符初始

Golang指针, 值类型&#xff0c;标识符&#xff0c;关键字&#xff0c;标识符 采用文章 https://www.runoob.com/go/go-operators.html本章使用go练习工具 https://tour.go-zh.org/welcome/1指针 基本介绍 基本数据类型&#xff0c;变量存的就是值&#xff0c;也叫值类型获…

java基于ssm的的律师事务所预约管理系统的设计与实现

网站前台:关于我们、帮助信息、法律资讯、律师信息、服务信息、服务评价管理员功能 1、管理关于我们、帮助信息 2、管理资讯类型、添加法律资讯 3、添加律师信息(姓名、特长、照片、描述等等 ) 管理服务类型信息(讨薪、民事、刑事等等]、查看服务信息4 5、查看试题信息、查看试…

调用api key使用chatgpt,缓解chatgpt封控

前言&#xff1a; 现在国内的很多网页版的chatgpt网页随处可见 &#xff0c;但是很多都是3.5的接口&#xff0c;而且有些还有次数限制&#xff0c;毕竟现在4.0的api贵的离谱&#xff0c;在前期注册的chatgpt账号&#xff0c;其实官方是赠送有18美金的api额度供我们使用&#x…

Solaris Network:BSC上首个链上合成资产解决方案

Solaris Network 是一个开创性的项目&#xff0c;为 Binance Smart Chain&#xff08;BSC&#xff09;提供链上合成资产解决方案。Solaris 通过在区块链和实际金融领域之间搭建一座独特的桥梁&#xff0c;为多链 Web 3.0 金融衍生品市场奠定了全面基础设施。 本技术分析探讨了 …

MySQL 日期时间函数

文章目录 日期时间函数1. now()2. curdate()3. curtime()4. week(date)5. year(date)、month(date)、day(date)6. datediff(date1,date2)7. adddate(date,n) 日期时间函数 日期操作是 MySQL 中的常用操作&#xff0c;掌握常用的日期时间函数并熟练组合运用&#xff0c;能够帮助…