解决:net8使用JWT的时候报错,Authentication failed: IDX14100: JWT is not well formed, there are no dots (.).

1. 背景

用net8+JWT+Swagger,尝试做一个demo,然后就掉坑里了,折腾了好几天,都快疯了,明明可以生成JWT的token,但是使用生成的token调用接口就报Authentication failed: IDX14100: JWT is not well formed, there are no dots (.). The token needs to be in JWS or JWE Compact Serialization Format. (JWS): 'EncodedHeader.EndcodedPayload.EncodedSignature'. (JWE): 'EncodedProtectedHeader.EncodedEncryptedKey.EncodedInitializationVector.EncodedCiphertext.EncodedAuthenticationTag'.,看看这报错,说传的token里没有(.),明明有啊!!!

然后让gpt4o检查,它也看不出什么问题,根据这段时间的体验,gpt4o的确很强大,但它只会给出模板代码,解决常规的问题,如果某个问题太奇葩,它也分析不出问题,这时候就只能靠搜索引擎了,靠互联网上广大的程序员基数,相信我不是第一个遇到的,google了一下,还真找到有人一样报错了,用我自己的理解改了一下,还真解决问题了,真是魔术一样的bug!!!

互联网上大家遇到这个问题,基本描述是说从低版本升级到net8后,本来正常的JWT代码,突然就不行了,由此大概也能推测是net8的问题,不知道改了什么,导致生成的token是正常的,但解析的时候,无法识别。

2. 解决方案

  • 打开终端/命令提示符cmd,导航到你的项目目录
  • 运行命令:dotnet add package Microsoft.IdentityModel.Tokens --version 7.6.2,版本7.6.2可能会因人而异,安装后运行尝试运行项目,看看报错来更改版本
  • 这样就解决了,很简单,但就折腾了几天,有时候就是那么无奈!

over,enjoy!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值