zer*_*993 2 decode jwt react-native
我的应用程序当前正在博览会上运行,我需要一种方法来解码从后端收到的 JWT 令牌。当我使用jwt.io它时,\xe2\x80\x99t不需要密钥来解码,但我可以\xe2\x80\x99t似乎找到一个支持expo的库,不需要\xe2\x80\x99t需要密钥来解码。我尝试使用下面的代码在没有库的情况下对其进行解码,但它不起作用:-
JSON.parse(new Buffer(token.split(\xe2\x80\x98.\xe2\x80\x99)[1], \xe2\x80\x98base64\xe2\x80\x99.toString())); \nRun Code Online (Sandbox Code Playgroud)\n\n我尝试过使用一些博览会库,但我发现的所有库都需要一个密钥来解码,如果我将空字符串传递给密钥,它就不会解码。\n我也尝试过在没有库的情况下进行解码
\n\n通过解码 JWT 令牌后,预期结果是以下对象jwt.io:
{\n "id": "5ce667c89133fd61e7f08c53",\n "name": "TEST Group",\n "username": "chia.wq@redtech.my",\n "type": "G",\n "iat": 1560152565\n}\nRun Code Online (Sandbox Code Playgroud)\n\n有没有其他方法可以让我在没有密钥的情况下通过使用或不使用 Expo 上的 React Native 中的库进行解码?
\nJWT 密钥仅用于对令牌进行签名,因此 yes 可以在没有密钥的情况下提取数据。
您唯一缺少的是缓冲区不是以 Base64 编码而是以“URL Base64”编码。
在传递令牌部分之前,Buffer您必须将所有“-”替换为“+”,将所有“_”替换为“/”。
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
const parts = token.split('.').map(part => Buffer.from(part.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString());
const payload = JSON.parse(parts[1]);
console.log('JWT payload', payload);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |