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!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐