Feign调用出现权限问题 feign.FeignException$Unauthorized: [401] during [GET] to[....]

news2024/11/23 22:02:31

报错讯息

使用Spring Cloud + Spring Security Oauth2.0 + JWT 做分布式认证的时候,内部微服务调用的时候出现权限问题。

feign.FeignException$Unauthorized: [401] during [POST] to [http://authorization-server/oauth/token?grant_type=password&username=admin&password=123456&login_type=admin_type] [OAuth2FeignClient#getToken(String,String,String,String,String)]: [{"error":"unauthorized","error_description":"A granted authority textual representation is required"}]
	at feign.FeignException.clientErrorStatus(FeignException.java:197) ~[feign-core-10.10.1.jar:na]
	at feign.FeignException.errorStatus(FeignException.java:177) ~[feign-core-10.10.1.jar:na]
	at feign.FeignException.errorStatus(FeignException.java:169) ~[feign-core-10.10.1.jar:na]
	at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:92) ~[feign-core-10.10.1.jar:na]
	at feign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:96) ~[feign-core-10.10.1.jar:na]
	at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138) ~[feign-core-10.10.1.jar:na]
	at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89) ~[feign-core-10.10.1.jar:na]
	at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100) ~[feign-core-10.10.1.jar:na]
	at com.sun.proxy.$Proxy167.getToken(Unknown Source) ~[na:na]
	at com.casey.service.impl.SysLoginServiceImpl.login(SysLoginServiceImpl.java:60) ~[classes/:na]
	at com.casey.controller.SysLoginController.login(SysLoginController.java:39) ~[classes/:na]

可能的说法

网上查了说缺这个。但我已经有了。
这种情况为没有认证就请求了资源服务器的资源,解决办法为使用Feign的时候把请求的认证信息传递过去,或者资源服务那边开放一些接口。不过开放接口的话情况有点多,所以就选择把token携带过去了。feign提供了一个名为RequestInterceptor得拦截器,可以在请求的时候指定请求头。

@Slf4j
public class OAuth2FeignConfig implements RequestInterceptor {
    // 在每一个请求里面,都会被调用
    @Override
    public void apply(RequestTemplate requestTemplate) {
        // 1. 可以藏 request 的上下文环境获取 token
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        if(requestAttributes == null){
            log.info("没有请求的上下文,故无法进行token的传递");
        }
        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        String header = request.getHeader(HttpHeaders.AUTHORIZATION);   // 获取请求上下文的头里面的AUTHORIZATION
        if(!StringUtils.isEmpty(header)){
            // token 传递
            requestTemplate.header(HttpHeaders.AUTHORIZATION, header);
            log.info("本次token传递成功,token值为{}", header);
        }
    }
}

解决方案

最后发现是数据库的权限表错手删除了。补上就好了,应该是查完拿了个 null 就有问题了。
在这里插入图片描述

参考

Feign调用出现权限问题 feign.FeignException$Unauthorized: [401] during [GET] to[…]

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

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

相关文章

Python采集学习笔记-读取excel数据

表格格式 方法一:使用xlrd import xlrd 1.读取Excel文件 workbook xlrd.open_workbook(plc.xlsx) 2.读取第一个表 sheet workbook.sheet_by_index(0) 3.获取表格总行数 total_rows sheet.nrows 4.创建列表,存储表格一行中每一列信息 plc_info [] for row in range(1…

【遥感专题系列】遥感影像信息提取之——人工目视解译

​遥感影像通过亮度值或像元值的高低差异(反映地物的光谱信息)及空间变化(反映地物的空间信息)来表示不同地物的差异,这是区分不同影像地物的物理基础。 ​人工解译是目前国内使用最多的一种影像提取方法,如…

【20240131】USB相机(查看设备列表、打开设备)

USB相机采集 1、v4l2查看设备列表2、查看具体设备信息3、在桌面打开USB相机 1、v4l2查看设备列表 打开终端,输入:v4l2-ctl --list-devices usb设备在Webcam: Webcam栏,分别是video9和video10,下一步:确定哪一个是接入…

便携式风速风向仪的应用场景

【TH-BQX2】便携式风速风向仪是一种用于测量风速和风向的仪器,具有便携、易用、高精度等特点。该仪器通常由传感器、数据采集器和显示终端等部分组成,能够实时监测风速、风向、温度、湿度等多种气象要素,并通过多种通讯方式将数据传输到计算机…

医院安全(不良)事件报告系统源码,不良事件处理的全过程管理,实现11大类不良事件类型的报告上报、流转审批、跟踪改进及统计分析功能。

医院安全(不良)事件报告系统源码,不良事件上报系统源码,PHP源码 医院安全(不良)事件报告系统提供11大类不良事件的上报、事件审核处理、时间按分析、事件跟踪与持续改进,事件提醒、权限控制、外…

C语言 | 求最大/小值小技巧:fmax、fmin函数

如果你只是因为不想用C语言手写max、min函数,就直接去用iostream中的max、min函数的话,这篇文章可能会有些许帮助。 😇 fmax、fmin函数用于确定两个指定值的较大/较小值。 头文件 math.h(或者cmath)。 定义 double …

使用Mysql实现Postgresql中窗口函数row_number的功能

1. 描述 需要根据用户id,查询每个人得分第二高的科目信息 2. 表结构及数据 2.1 表结构 CREATE TABLE t_score (id bigint(20) NOT NULL AUTO_INCREMENT,user_id bigint(20) NOT NULL,score double NOT NULL,subject varchar(100) NOT NULL,PRIMARY KEY (id) ) E…

Java技术栈 —— Spring MVC 与 Spring Boot

参考文章或视频链接[1] Spring vs. Spring Boot vs. Spring MVC[2] Key Differences Between Spring vs Spring Boot vs Spring MVC

VMware安装RHEL-磁盘划分和分区

本文探讨了在VMware虚拟机上安装RHEL时遇到的磁盘划分和分区问题。文章详细介绍了磁盘划分过程中可能出现的问题,特别是在选择磁盘类型时可能导致找不到磁盘的情况。通过清晰的步骤和解决方法,读者可以更好地理解如何正确进行磁盘划分以及如何解决磁盘无…

c#鼠标绘制

有用的没用的,用的上的用不上的,能写的不能写的,反正想起来就写了,比如这篇,好像一般也没什么用,emmm,或许,做录制软件的时候可以用一下。 顾名思义,本篇主要就是来实现将…

九章云极DataCanvas公司荣登“2023Venture50投资界数字科技”榜

近日,由中国领先的创业与投资综合服务机构清科创业、投资界发起的2023Venture50评选结果最终揭晓。九章云极DataCanvas公司凭借雄厚的技术实力、稳定的业务发展和成熟的商业模式,入选“2023Venture50投资界数字科技TOP50”。 Venture50评选(简…

【经典项目】Java入门,实现斗地主小游戏

一、需求分析 实现斗地主游戏可以涉及以下几个关键步骤和思路: 游戏规则定义:首先,你需要明确斗地主游戏的规则,包括牌的花色和大小、玩家数量、发牌顺序、出牌规则、胜利条件等。 牌的表示和初始化:定义一套扑克牌的…

【Android Studio 启动出错】

Android Studio版本:2022.3.1 出错前操作: 昨晚开着三四个项目,然后太晚了直接关机睡觉,第二天起来开机,启动Android Studio,就出现了这个问题: Internal error. Please refer to https://co…

亚信安慧AntDB构建未来数据库典范

亚信安慧AntDB是一款数据库管理系统,它采用全球影响力大、社区繁荣、开放度高、生态增长迅速的PG内核。这款系统具有卓越的性能和稳定性,在全球范围内备受用户青睐。 与此同时,AntDB的社区也是充满活力的,用户可以在社区中交流经…

【C++】类和对象(二)——构造/析构/拷贝构造函数

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读1. 默认成员函数2. 构造函数2.1 引入2.2 特性2.3 默认构造函数 3. 析构函数3.1 概念3.2 特性3.3 默认析构函数 4. 拷贝构造函…

ARM汇编 4.GNU伪指令、内联汇编

汇编伪指令格式 标号symbol(label) 注释符号: 整行注释:# 语句分离:; 立即数前缀:# 或 $ 分段:.section伪操作,用于自定义新的段 .text:代码段.data&am…

【服务端性能测试】性能测试策略如何做

一、需求收集 先需要确认本次测试目的是什么,然后再看我们需要用什么参数来判断这个目的是否能够达成。 1.1 业务性能指标参考: TPS、QPS、RT、请求成功率(一般请求成功率>99.99%) 1.2 硬件性能指标参考: 即服…

C++ 滑动窗口

目录 1、209. 长度最小的子数组 2、3. 无重复字符的最长子串 3、1004. 最大连续1的个数 III 4、1658. 将 x 减到 0 的最小操作数 5、904. 水果成篮 6、438. 找到字符串中所有字母异位词 7、30. 串联所有单词的子串 8、76. 最小覆盖子串 1、209. 长度最小的子数组 思路&…

超越传统—Clean架构打造现代Android架构指南

超越传统—Clean架构打造现代Android架构指南 1. 引言 在过去几年里,Android应用开发经历了巨大的变革和发展。随着移动设备的普及和用户对应用的期望不断提高,开发人员面临着更多的挑战和需求。传统的Android架构在应对这些挑战和需求时显得有些力不从…

计算机网络-物理层传输介质(导向传输介质-双绞线 同轴电缆 光纤和非导向性传输介质-无线波 微波 红外线 激光)

文章目录 传输介质及分类导向传输介质-双绞线导向传输介质-同轴电缆导向传输介质-光纤非导向性传输介质小结 传输介质及分类 物理层规定电气特性:规定电气信号对应的数据 导向传输介质-双绞线 双绞线的主要作用是传输数据和语音信息。它通过将两根导线以特定的方…